1 Name: 名称未設定 [] Date: 02/11/10 19:18 ID: Q0GVS7Jy Be:
Cocoaはやっぱり!を見て真似してソフトを作ったは良いが、
オリジナルを作ろうと思ったら、全然その先に進めない人集まれ!

親切なプログラマーさんが暇なときだけ教えてくれる(かも?)

前スレ
http://pc.2ch.net/test/read.cgi/mac/1007632025/l50

関連スレは>>2-20までには
2 Name: あぼーん [あぼーん] Date: あぼーん ID: Be:
あぼーん
3 Name: 名称未設定 [sage] Date: 02/11/10 20:26 ID: FTCD2p+F Be:
>>2
氏ね
4 Name: [sage] Date: 02/11/10 21:45 ID: SfOoV9YF Be:
ていうか、関連スレを人任せな1にも問題があるかと…
5 Name: あぼーん [あぼーん] Date: あぼーん ID: Be:
あぼーん
6 Name: コリン ◆EIQCCGY9hg [sage] Date: 02/11/10 22:39 ID: 97roG81A Be:
>>1
お疲れ~
でも、前スレにリンクが貼れなかったのが残念
7 Name: 名称未設定 [] Date: 02/11/11 01:21 ID: eTPFWQHf Be:
とりあえず貼っときます。
不備があったら誰か補って下さい。

関連スレ

Macでプログラミング{2}
http://pc.2ch.net/test/read.cgi/mac/1025998843

◆◆◆◆◆◆MacでJava◆◆◆◆◆◆
http://pc.2ch.net/test/read.cgi/mac/991194610

前スレ発
Cocoaでメーラー作るよ
http://pc.2ch.net/test/read.cgi/mac/1035386838

関連サイト
Cocoaはやっぱり!
http://www.big.or.jp/%7Ecrane/cocoa/

HAPPY Macintosh Developing TIME!
http://homepage.mac.com/mkino2/

Cocoa Developer Documentation
http://developer.apple.com/techpubs/macosx/Cocoa/CocoaTopics.html
(開発ツールをインストールすれば、/Developer/Documentation/Cocoa/CocoaTopics.html に同様の資料がある)
8 Name: ◆ftPf.M4w3U [] Date: 02/11/11 17:02 ID: 3CNSm3S7 Be:
>>1
9 Name: 名称未設定 [] Date: 02/11/13 00:12 ID: T0KM6e2H Be:
ドキュメントベースアプリでウィンドウにNSTextView張り付けて
『フリーのテキストエディタです、使って下さい』
っていうのはもういいよ。

↑たまに見かけるんだよね。
SimpleTextにも満たないエディタは必要ないよ。
練習のためならいいと思うけど。。。

>>1
御吊
10 Name: 名称未設定 [] Date: 02/11/13 22:03 ID: eDc4xtay Be:
すみません、いま練習用に簡単な画像ビュアーと画像形式変換アプリをCocoaで作っているんですけど
疑問点が2つ出てきましたので質問させて下さい。

(1) ファイルからinitWithContentsOfFileでNSImageに貼付けた画像の元データの画像形式を知る方法は
あるのでしょうか?PNGやJPEGなどはNSImageに貼付けるとぜんぶBitmapImageRepとして保ってる
ようなのでrepresentationの種類で区別はできなそうですが他になにかありますか?
NSDataで取り込んでから自前の判定ルーチン作るか、拡張子やファイルタイプで見分ければいけるとは
思いますができればCocoaに任せたいのです。
(2) 画像形式を変換して保存する際、「Cocoaはさっぱり!」に書かれているようにBitmapImageRepを
作ってrepresentationUsingType: properties :で変換しようとしたのですが、NSBMPFileTypeの時だけ
何を入れてもnilが帰ってきます。PNG等は問題なく生成されます。
alphaを除いたりpropertiesにnilや適当なNSDictionaryを入れたのですが全然ダメです。
なにか他に必要な前処理か、必須のキーがあるのでしょうか。

googleなどで検索しましたが参考になる記述が見つかりませんでした。
もしなにか分かる人がいましたら教えて下さい。
開発環境はOS10.2.1とそれに付属のProjectBuilderです。
11 Name: 名称未設定 [sage] Date: 02/11/14 23:45 ID: TR9aYstl Be:
>>9
NSTextViewだけでSimpleTextを軽く超えている罠。
12 Name: 9 [sage] Date: 02/11/15 01:14 ID: AUeHEC4M Be:
>>11
俺が言いたかったのはテキストエディットのことらしい。。。
全然気付かなかった。。。
撃つ堕し膿。
13 Name: 名称未設定 [] Date: 02/11/16 12:55 ID: d66nvhZZ Be:
書籍版「Cocoaはやっぱり!」の第4章「カウントダウンタイマーを作成」に挑戦中です。
NSTimerの項のソースを作成し、ビルドすると

?Compiling TimerController.m (2 個の警告)
TimerController.m:25: warning: cannot find class (factory) method
TimerController.m:25: warning: return type for `scheduledTimerWithTimeInterval:target:selector:userinfo:repeats:' defaults to id

というワーニングが出ますが、アプリケーションは作成されます。
しかし、作成されたTimerアプリケーションを起動し、Startボタンをクリックすると
Project Builderの実行ウィンドウに

2002-11-16 12:31:50.218 Timer[582] *** +[NSTimer scheduledTimerWithTimeInterval:target:selector:userinfo:repeats:]: selector not recognized

というメッセージが出ます。

次に、ソース中のタイマー作成部分を

?timer = [self doAlerm];

と、メソッドを呼ぶだけに変更してビルドするとワーニングは出なくなったのですが、
前回と同じくStartボタンをクリックすると、

2002-11-16 12:28:47.750 Timer[554] *** -[TimerController doAlerm]: selector not recognized

というメッセージが出ます。

doAlermメソッドがうまく認識されていないような気もしますが、何が悪いのかさっぱり
分かりません。とほほ。
アドバイスをお願いします。
14 Name: 名称未設定 [] Date: 02/11/16 13:15 ID: 4spgFSNh Be:
>>13

× scheduledTimerWithTimeInterval:target:selector:userinfo:repeats
○ scheduledTimerWithTimeInterval:target:selector:userInfo:repeats

user"I"nfo
Iが大文字です。

メソッドはヘッダからコピペしたほうが安全。
あと、警告を信じる。
15 Name: 名称未設定 [] Date: 02/11/16 16:42 ID: THE4kyr1 Be:
今cocoa/Javaの勉強を兼ねてFTPのクライアントを作成しているのですが、
二つほど謎のエラーがおきます。

『***はシグナル 10(SIGBUS)により終了しました。』
『abstractMethodError』

というエラーなんですけど(二つ目はめったに出てこないので記憶が曖昧で
す)どちらも特定の場面で出てくるわけではなく、たまに(恐らく処理が重いとき)出てきます。
処理が重いといっても全然たいしたことないはずですし、どうしていいのかわかりません。
だれか原因について思い付く方はいらっしゃいませんか?
16 Name: 名称未設定 [sage] Date: 02/11/16 19:01 ID: uvqdPQmj Be:
>>15
推測だけど、最初のがメモリ関係、次がそのまま、インプリメント
されてないメソッド、抽象クラスなどのメソッドを呼び出した、
ってことでないの? Javaは詳しくないけど。

ところで、まさか、そのプログラムで他人のサーバに
つないでないだろうね(w
17 Name: 名称未設定 [sage] Date: 02/11/16 19:16 ID: LBGGcBgj Be:
Web上でObjective-Cの解説サイトってわかりやすくて、
いいところないですかね。
普通のC言語なら掃いて捨てるほど出てきますが。
18 Name: 名称未設定 [] Date: 02/11/16 19:29 ID: V79Ufrn7 Be:
>>15
AbstractMethodErrorは、抽象メソッドを呼び出したっていう
意味で、普通はコンパイル段階でエラーになるはず。
一度クラスファイルを全部削除して再コンパイルをかけた方が
いいんじゃないかな。
めったに出ないなら、すでに問題が解消されているような気もするけど。

上のエラーの方は、それだけじゃちっともわかんないので、
まずは地道にデバッグして落ちている箇所を特定しましょう。
19 Name: 13 [] Date: 02/11/16 19:45 ID: d66nvhZZ Be:
>>14

あ、全然気が付きませんでした。
実は去年からずっとここで悩んで止まってたんです。
目、悪すぎ>俺

やっと次に進めます。本当にありがとう!
20 Name: 名称未設定 [sage] Date: 02/11/16 19:46 ID: HR986RqX Be:
file://localhost/Developer/Documentation/Cocoa/ObjCTutorial/index.html
21 Name: 名称未設定 [sage] Date: 02/11/16 20:08 ID: UPY/awzr Be:
おまえら英語を母国語のごとく使えるんですか。そうですか
うらやますいです。
22 Name: 15 [sage] Date: 02/11/16 21:38 ID: THE4kyr1 Be:
お返事ありがとさんです。
>>16
やっぱり一つ目のエラーはメモリ関連ですよね。
まさかjavaやっててメモリ関連のエラーを受けるとは・・・、とほほ。

>>18
いまから目を凝らして落ちてる場所を探します。
そういえばテーブルの描画周りが怪しい、ドキュメントにも
『このメソッドは気をつけろ』ってのがあったしなぁ。
ちょっとやっつけちゃいますね。

23 Name: 15 [sage] Date: 02/11/16 22:42 ID: THE4kyr1 Be:
たびたびすいません。
今気付いたことなんですけど、どんなにクラスファイルを全削除 -> リコンパイル
してもコンパイルエラーが出ません。なのにjava.lang.AbstractMethodErrorは
しっかりでます。
具体的にはテーブルやボタン等をひたすら連続でクリックすると出てきます。
しかも[Abstract ~~~~]が出た後にシグナル10で落ちます。
シグナル10はメモリ関連ということで俺が悪いのでしょうけど、[Abstract ~~ ]は
どうもよくわかりません。
同じようなことに出くわしたことある人っていませんか、いませんよね。
がんばってみます。

delegate関係なのかなぁ??
24 Name: どざ [sage] Date: 02/11/17 14:53 ID: AoXQp0yz Be:
>>21
そんな貴方にMSDN!
殆ど日本語になっている。
Windowsはいいぞ・・
でも最新情報を見る際はアチラ語が必要罠。

Cocoaは例え日本語でも楽でない気がする。
資料多すぎ。
今は皆そうか・・
25 Name: 名称未設定 [] Date: 02/11/17 18:53 ID: JuIOHsrq Be:
アフォな質問でもうしわけないんですけど
一行もコードを書いていないdocument-based applicationで
ウインドウを閉じたり出したりしてるだけで
どんどん常駐メモリサイズ増えていくんですけど
どうすればいいですか?
26 Name: 名称未設定 [sage] Date: 02/11/17 21:03 ID: AoXQp0yz Be:
決してアフォな質問ではないぞ>>25
たぶんcacheだと思うが・・
OSXでは掴んだら他が苦しみだす迄離さないのが多い噂。
余裕がある限り浪費しまくるらしい。
詳細は知らんので後は何方か頼む。
27 Name: 名称未設定 [sage] Date: 02/11/17 23:07 ID: EHrarF3T Be:
>>25
それすげー気になる。
だれか分かる人はいませんか?
Cocoaの神よ、降りてきて下され!
28 Name: 名称未設定 [sage] Date: 02/11/18 00:54 ID: 9VxuTFPf Be:
ttp://www.nt.sakura.ne.jp/~stglide/
>>10さん?
29 Name: 名称未設定 [sage] Date: 02/11/18 03:04 ID: yMpybPUr Be:
胸、でか!
30 Name: 10 [sage] Date: 02/11/18 14:26 ID: mGA7yCj/ Be:
>>28
あ、どうもです。
リンク先見てみたけどどうもそこはCocoa-javaの話みたいでjavaはさっぱりなわたしには
ちょとよくわからないけど、どうやら画像の判別はしていないようでした。
もうちょっと勉強してみます。どうもありがとうございました。
31 Name: 名称未設定 [] Date: 02/11/18 14:54 ID: E9r0CerX Be:
>>15
Javaは良く分らんが、クラスクラスタが抽象クラスのオブジェクトを返してるんじゃないのか?
hoge = new NSArray();
hoge,count();
とか。

>>25
- setReleasedWhenClosed:(BOOL)flag;
- (BOOL) isReleasedWhenClosed;
この辺じゃねーの?
32 Name: 名称未設定 [sage] Date: 02/11/18 22:22 ID: HJP2ChSK Be:
>>26
はは、思わず笑っちゃったよ。

DevツールのObjectAllocを使えば、自分のコードに問題が
あるのか、それともフレームワークのキャッシュなのか分かるよ。
33 Name: 25 [sage] Date: 02/11/19 19:00 ID: JgIxcG4+ Be:
え~とよくわからないけど気にすんなってことか。
34 Name: 名称未設定 [] Date: 02/11/23 14:09 ID: SFJs1zUE Be:
ホッシュ ホッシュ
35 Name: 名称未設定 [] Date: 02/11/23 15:05 ID: BArg2VmU Be:
NSUserDefaultsなんですけど、本によって#defineを使ってるのとNSString *〜ってやる方法がありますよね。これって、どっちが良いんでしょう? なんか違いとかあるんでしょうか?

あと、Cocoaはやっぱり!のP110〜の「環境設定の読み込みと保存」とか読んでTextFieldにデフォルト値から文字列を読み込む方法は分かったんですけど、チェックボックスのデフォルト値を保存したりする方法ってどうすればいいんでしょう?
36 Name: 名称未設定 [sage] Date: 02/11/23 15:45 ID: fkVOFMwB Be:
>>35
個人的にはどっちでもいいような気がします。
自信はありませんけど・・・

>チェックボックスのデフォルト値を保存したりする方法ってどうすればいいんでしょう?
- setBool:forKey: や
- boolForKey:
を使いましょう。
あと少しでもいいですからAppleのリファレンス読んでみて下さい。
英語ですが大体のことはここで分かります。
37 Name: 名称未設定 [] Date: 02/11/23 18:46 ID: ck8YguLD Be:
最近Amazonが古本の個人売買の仲介始めましたよ。

Mac関連のプログラミング本も安くゲットできるチャンスかも。
38 Name: 35 [] Date: 02/11/24 16:35 ID: JE4xLmZr Be:
>>36
どうも、ありがとうございます。
早速試していますが、デフォルト値を定義して上手く.plistに書き込むところまで
は成功しましたが、変更が保存されません。。
例えばデフォルトではチェックボックスをONにしてあるものをOFFにしても
その変更が繁栄されない、という感じです。

保存は(Cocoaはやっぱりの例を拝借して)こんな感じ↓でやってます。

[ defaults setBool : obj1 forKey : @"obj1" ];


>あと少しでもいいですからAppleのリファレンス読んでみて下さい。

リファレンス、苦労してます。あれ読んでも具体的にどう書けば良いのかが掴めず。。
39 Name: 名称未設定 [sage] Date: 02/11/25 15:45 ID: LN3mpiqD Be:
>>38

>例えばデフォルトではチェックボックスをONにしてあるものをOFFにしても
>その変更が繁栄されない
これは、通常プログラマの仕事であって、フレームワークの仕事ではない。

>Cocoaはやっぱり!のP110(略)
多分この本には、サンプルコードだけではなく、
サンプルコードのこの部分はこう言うことをしている、という説明がついてるはずだ。
説明には、自動的に設定が反映されると書いてあったのか?
日本語も読めないのか?
40 Name: 名称未設定 [sage] Date: 02/11/25 18:14 ID: 5/1W17Xm Be:
こうしてCocoaプログラマは減っていく…
41 Name: 名称未設定 [] Date: 02/11/25 19:03 ID: nd6BCjh+ Be:
NSTableViewに表示されるテキストの色を、行ごとに変えたいのですが、
これは可能なのでしょうか。
42 Name: 名称未設定 [] Date: 02/11/25 19:45 ID: FwBGxRRY Be:
10.2から実装されたSpinタイプのプログレスバーだけど、サイズの変更、コーディングで細かく設定出来ないすかねぇ?
43 Name: 名称未設定 [] Date: 02/11/25 20:00 ID: 5yltS0rr Be:
Finderの「情報をみる」パネルみたいな、
黒い三角のボタンを押すと隠れていた項目がにょきっと出てくる
インターフェースを作りたいんと思っているのですが、
これって、Cocoaだと、どうやってやればいいのでしょうか。
調べてもどうしても分からないので、
ご存知の方がいらっしゃったら教えてください。
44 Name: 名称未設定 [sage] Date: 02/11/25 22:16 ID: PyISHp7r Be:
>>43
> 黒い三角のボタンを押すと隠れていた項目がにょきっと出てくる
> インターフェースを作りたいんと思っているのですが、

これをやるには自分で作るしかないと思われ
調べてもどうしても分からないんだったら諦めたほうが吉
45 Name: 36 [sage] Date: 02/11/25 22:35 ID: PyISHp7r Be:
>>38
あくまでもNSUserDefaultsがやることはデフォルト値を保存するということだけで
チェックボックスのON,OFFを自動的に感知して保存するわけではありません。
もしそれをしたいのならばチェックボックスのActionを他のインスタンスに設定して、
その都度BOOL値を保存する必要があります。

あとは、もう少し予算があれば本を買うことをお勧めします。
荻原本やヒレガス本あたりが基礎を高めるのにはいいと思います。
46 Name: 38 [] Date: 02/11/25 22:50 ID: FwBGxRRY Be:
>>45
ありがとうございます。Actionまわりを設定したら上手く保存出来たようです。

>荻原本やヒレガス本あたり
分かりました、良いと評判のヒレガス本を買ってみます。
47 Name: 名称未設定 [sage] Date: 02/11/26 15:32 ID: 95oFXXL9 Be:
>>41
できるよ。
データソースの
tableView:objectValueForTableColumn:row:
このへん。

>>43
Carbon in Cocoaになると思う。
http://developer.apple.com/techpubs/macosx/Essentials/AquaHIGuidelines/AHIGControls/Disclosure_Triangles.html
このへんと
http://developer.apple.com/techpubs/mac/HIGOS8Guide/thig-24.html
このへんと、
http://developer.apple.com/techpubs/macosx/Carbon/HumanInterfaceToolbox/AppManager/appearancemanager.html
http://developer.apple.com/techpubs/macos8/HumanInterfaceToolbox/ControlManager/controlmanager.html
このへん。

GrafPtrはNSQuickDrawViewから、
WindowRefはNSWindowから持ってこれる。
48 Name: 41 [] Date: 02/11/26 16:17 ID: CoVbHzGj Be:
>>47
レスありがとう。

Formatterを使ってNSAttributedStringのインスタンスを作ってやれば
いいのかな。
49 Name: 名称未設定 [sage] Date: 02/11/26 21:45 ID: aez694eC Be:
よく平然と英語解説ページを提示したりしてる人達は
英語ペラペラなの?

やっぱ英語勉強した方がいいのかな・・
50 Name: 名称未設定 [] Date: 02/11/26 22:28 ID: /bkrNtOS Be:
>>49
英語解説ページ読むのに英語ペラペラは関係なし。
必要なのは、
中卒程度の英語力+コンピュータ用語語彙+英和辞書
51 Name: 名称未設定 [] Date: 02/11/26 22:33 ID: 8v4+pZj2 Be:
正直、プログラマー的な慣用につまづく。
52 Name: 名称未設定 [sage] Date: 02/11/26 22:58 ID: qJyXcWyF Be:
>>44
ありがとうございました。
おかげであきらめる決心が付きました・・・
別のやり方でやりたいと思います。
53 Name: 47 [sage] Date: 02/11/27 08:48 ID: mjJgJ9yQ Be:
>>49
私の英語力は、話せません、聞き取れません、書けません、辞書があれば何とか読める程度です。
リア厨、リア工時代は何とか及第点を取れる、もしくは頭を下げて及第点をもらう程度でした。今思うとめちゃ悔やまれる。
こう言うのを読むときは、gooかexciteの辞書ページ開いてます。
専門分野の解説での長文翻訳は意味不明な日本語にしてくれるので逆効果です。
これでも専門用語を知っていれば何とかなります。
意味が分らない専門用語は英単語のままでもgoogleの日本語限定の検索で結構引っかかりますし、
それでも分らなかったら、無理やりカタカナにして検索すると言う手もあります。

私の場合、専門用語を覚えるのはもちろん日本語の解説書でです。
正直MacOSXPBあたりの時のCocoaは五里霧中状態でした。
NeXTSTEP,openstep関連のページを検索したり、MacTech Magagineを掘り出してきてラプソディー関連を読んでみたり...
やっと何とか使えるようになってからドドドと日本語の解説書が出てきた時は泣きました。

まあ、何とかなるもんなんで、一度読んでみて下さい。
54 Name: 名称未設定 [] Date: 02/11/27 11:45 ID: TOo99iKJ Be:
- drawRect: に渡される rect の値が時々正しくなくなり、表示が乱れて
しまいます。どんな原因が考えられるでしょうか。

ウィンドウを切り替えたときに、背面にまわったウィンドウの表示がおか
しくなります。調べてみると、rectの値がアップデートするべきviewのもの
と違ってしまっています。こんなことってあるのでしょうか。
55 Name: 名称未設定 [sage] Date: 02/11/27 15:10 ID: mjJgJ9yQ Be:
>>54
>調べてみると、rectの値がアップデートするべきviewのもの
>と違ってしまっています。

これが、Viewのframeの値と違ってると言うのなら、そういうものです。
アップデート対象部分だけがrectに入ってきます。

もし違うのであれば、
http://developer.apple.com/bugreporter/
これかなあ。でも英語だしねえ。
56 Name: 54 [] Date: 02/11/27 17:47 ID: C2HfZNRJ Be:
>>55
どうもありがとうございます。勘違いしてました。

[self bounds]を使って正常になりました。
正しくないのは私の頭の方でした。
57 Name: 名称未設定 [] Date: 02/11/28 01:08 ID: o34aQNfC Be:
初心者な質問で申し訳ないんだけど、教えてください。

CStringに入ってる文字列をStringにして、んでTextViewとかに表示させたいんだけど、
日本語が入ってる場合文字化けしちゃうんだけどどうすればいいのかな。

[ textView ?setString:[ NSString stringWithCString: CStr ]];
例えばこんな感じでtextViewに表示させても日本語だけ文字化けしちゃうのよね。
で、エンコードする必要があるとは思うんだけど、どうすれば良いのでしょうか。
誰かお助けを。
説明が下手でごめんなさい。
58 Name: 57 [sage] Date: 02/11/28 03:20 ID: o34aQNfC Be:
↑すまそ、わけわかになってた。なんでもないっす。忘れてください。
59 Name: 名称未設定 [sage] Date: 02/11/28 08:21 ID: tV4du4ko Be:
>>57

NSDataを介します。

NSData* shift_jis_Str = [NSData dataWithBytes:CStr length:strlen(CStr)];
NSString* string = [[NSString alloc] initWithData:shift_jis_Str encoding:NSShiftJISStringEncoding];
60 Name: 名称未設定 [sage] Date: 02/11/28 12:05 ID: pAol6nz1 Be:
あれー?
charCString[] = "てすと";
[ textView setString: [NSString stringWithCString:CString] ];
で問題なく日本語いけたけどなあ。(OS10.2.2)
61 Name: 名称未設定 [sage] Date: 02/11/28 20:25 ID: CnBW/6Az Be:
shift_jisなら大丈夫なんだよね。
62 Name: 名称未設定 [sage] Date: 02/11/29 04:35 ID: R37yFDBy Be:
CocoaからCarbonを経由しないで、AppleEventを送信することはできますか?
NSAppleScriptでもいいんだけど、やっぱりローレベルの方がいいなと。
(かといってCarbonはわからない…)
63 Name: 名称未設定 [] Date: 02/11/29 15:53 ID: rkUwweRh Be:
>62
素直に NSAppleScript 使えばいいのに。なんで駄目なの?
つーかローレベルってCarbonのことじゃない、この場合。
それともMachのメッセージ通信のこと?
64 Name: 名称未設定 [sage] Date: 02/11/29 18:44 ID: BvlS5AIB Be:
cocoaって情報少な過ぎ・・やっぱ止めようかな・・
65 Name: 名称未設定 [sage] Date: 02/11/29 18:54 ID: It/NUsFY Be:
>>64
情報少な過ぎなんて思うのはリファレンス読まないだけじゃないのか?
中学生レベルの英語でもメソッド名見れば大体分かるし。

66 Name: 名称未設定 [sage] Date: 02/11/29 21:00 ID: tx7QvZFD Be:
リファレンスに簡単なサンプルコードがついていればねぇ…
67 Name: 名称未設定 [] Date: 02/11/30 04:52 ID: Cjq7zlyu Be:
いや、ほんとにリファレンス読んで、ネット上にある数少ない情報を汲み取って
やればいろんなことが出来るよ。

俺も最初は『情報少なっ!』って思ったけどやってるうちに普通のことが普通に
出来るようになってた。(どんな言語や環境でもそんなもんだろ)

最初にちょっと苦労しておけば後が楽ですよ。
(って言っても読まないやつは読まないんだろうなぁ <- リファレンスのこと)
68 Name: 中学英語で質問してみる。 [] Date: 02/11/30 11:05 ID: 1Ta223gV Be:
How do I change window to fullscreen?

I set menu invisible and tried to change window mask.
But window mask cannot change except for initialization.
69 Name: 厨学生 [] Date: 02/11/30 11:20 ID: t1lfE8e8 Be:
どうやれば窓を全画面にできまつか?

メニューを不可視に設定して窓の覆いを変えてみますた。
しかし、初期化せずに窓の覆いを変更することはできませんでつ。
70 Name: 名称未設定 [sage] Date: 02/11/30 14:15 ID: ez6+CgxV Be:
>>68

ADC reference より
An NSWindow's style is set when the object is initialized. Once set, it can't be changed.
ここまで
71 Name: 名称未設定 [sage] Date: 02/11/30 21:10 ID: gcdL/i+9 Be:
>>66
 あー、サンプルコードついてるといいね。ADC行って適当なサンプルないか
探してくるより楽でいいや。Tell Usしてみる?
72 Name: 名称未設定 [] Date: 02/11/30 22:47 ID: KDCTJISn Be:
いやー、英語で書かれてる云々よりも、解説の仕方というか、
書き方というか、その辺かと。
リファレンスとか読んでも、何が出来る、ってのは分かるんだけど、
あとは「書式」と「返り値」とか書かれてるだけで、
具体的にどういう感じに書けば良いのかがさっぱり掴めないんだよね。
リファレンスだけじゃなくて、「Cocoaはやっぱり!」も書き方同じだし。
「で? どう書けばいいのよ?」みたいな。

分かってる人には分かるかもしれないけど、あれって、いわゆる
プログラマー的慣用表現なの?
初心者にはやっぱり分かりづらいと思うけどなぁ。
73 Name: 名称未設定 [sage] Date: 02/11/30 22:56 ID: hlh3YJMp Be:
自分で試すしかない。

テンプレートプロジェクトに少しずつ書き加える。
又はサンプルコードを少しずつ書き換える。

8bitBASIC時代からこの点は変わらないと思う。
74 Name: 名称未設定 [] Date: 02/11/30 23:20 ID: xXTQZHxO Be:
>>72
Referenceだけじゃなくて下のほうのProgramming Topicsも読んでそれをいってる?
サンプルコードもProgramming TopicsのTasksにあると思うが。
75 Name: 名称未設定 [sage] Date: 02/11/30 23:26 ID: lbtRXp8c Be:
なんにしろ母国語じゃないテキストだと
文章の意味を考えるところでいったん思考がとぎれる感じでやりにくいわな。
76 Name: 名称未設定 [sage] Date: 02/11/30 23:35 ID: GjV2W5ux Be:
なんかここの所心地よい程に今迄出てこなかった本懐が吹き出てますな。
77 Name: 名称未設定 [] Date: 02/12/01 06:06 ID: mJVog20L Be:
>>73
俺も思う。

>>72
いまから勉強をはじめる初心者には分かりづらくても仕方がないでしょ。
だって何も知らないんだから。
>>73の言う通り一つずつ試して納得していくしかないよ。
なんでもいいからアプリケーションって呼べるものを作ってみるといいよ。
その過程で必要なことを学ぶしかない。
78 Name: 名称未設定 [sage] Date: 02/12/01 11:27 ID: Lj9NcLaf Be:
リーナスもビルゲイツもみんな最初は初心者だったんだ
79 Name: 名称未設定 [sage] Date: 02/12/01 13:27 ID: y8ocN46l Be:
>>78
(´_ゝ`)フーン
80 Name: 名称未設定 [] Date: 02/12/02 20:04 ID: vpa25MiQ Be:
>>69
NSWindowのサブクラスを作って、- (id)initWithContentRect:(NSRect)contentRect styleMask:(unsigned int)styleMask backing:(NSBackingStoreType)backingType defer:(BOOL)flag

で初期化する。
InterfaceBuilder上では、このサブクラスを指定する。
81 Name: 名称未設定 [] Date: 02/12/03 11:39 ID: hZcL6gkc Be:
誰か前スレ保存してる人いない?
82 Name: 名称未設定 [] Date: 02/12/03 16:40 ID: tDZUDA3f Be:
>>81
俺も読みたい。だれか,たのむ。
83 Name: 名称未設定 [sage] Date: 02/12/03 17:03 ID: 86kTXrtx Be:
>>81
>>82
1-985までならあるけど。

うpロダは?
84 Name: 10.1.5 [sage] Date: 02/12/05 16:38 ID: gY14st/y Be:
April 2002 Developer Tools BetaにupしたらProjectBuilderのメニューが
英語になった。
85 Name: 名称未設定 [] Date: 02/12/06 20:58 ID: pJLljC0s Be:
NSDictionaryについて質問です.よろしくお願いいたします.

下記のようなproperty listをNSDictionaryとしてメモリに
展開するところまではできました.しかし,
allKeysを使用して全てのkeyを取りたいのですが,KeyString-1
しかとれません.他のキー(例えばKeyString-2)を取るには
どのようにしたらよいでのしょうか.ご教示お願いいたします.


<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>KeyString-1</key>
<array>
<dict>
<key>KeyString-2</key>
<string>hoge</string>
<key>KesyString-3</key>
<integer>1</integer>
<key>KeyString-3</key>
<string>hoge</string>
<key>KeyString-4</key>
<true/>
<key>KeyString-5</key>
<true/>
</dict>
</array>
</dict>
</plist>
86 Name: 名称未設定 [sage] Date: 02/12/06 22:31 ID: Kh6J19bk Be:
KeyString-1
├KeyString-2─hoge
├KesyString-3─1
├KeyString-3─hoge
├KeyString-4─true
└KeyString-5─true
となっているようだがツッコミを入れといた方がいいのか?
87 Name: 名称未設定 [] Date: 02/12/07 03:11 ID: VT9rZAZv Be:
cocoaでプログラミングしてる人って普段何してるんですか?
macのプログラマー?
88 Name: 名称未設定 [sage] Date: 02/12/07 03:12 ID: 06x21qQG Be:
漁師ですが
89 Name: 名称未設定 [sage] Date: 02/12/07 08:10 ID: 2VVR0iYR Be:
日曜大工
90 Name: 名称未設定 [] Date: 02/12/07 11:41 ID: pOVnGu3L Be:
>>72
分かる気がする。

やりたいことを実現するメソッドは見つかった。そいつの引数も分かった。
しかし、その引数のオブジェクトはどこから調達してくるの?
おれが用意しているオブジェクトからどうやってとってくるの?
みたいな堂々回り。

またやりたいことと用意されているメソッドの機能レベルが違うと
探すこと自体がたいへんだしね。
もっとも、これはクラスライブラリの全容を知らないからだけど(^^;;
91 Name: 名称未設定 [] Date: 02/12/07 14:04 ID: Rv/fl+c0 Be:
そのへんはメソッド名をぐぐるで検索すればたいていどこかの誰かがサンプル書いていると思うが。
英語サイト行かないとわからないときもあるけど。
92 Name: 85 [] Date: 02/12/07 14:21 ID: bHIIFNMT Be:
>>86
そうなんです.そのようにネストされている場合の
Keyの取り方が分からないのです.
KeyString-1のvalueを取ってきて,valueを再び
NSDictionaryにして,allKeysでKeyを取る.
といったことしか思い付かないのですが,それしか
ないのでしょうか?
93 Name: 名称未設定 [sage] Date: 02/12/08 19:20 ID: zAei9Sp0 Be:
AppKitとFoundationのFrameworkリファレンスを見る!

PDF版ならAcrobatで栞を目次代わりに使えるので便利。
94 Name: 名称未設定 [] Date: 02/12/08 20:41 ID: QlUwYw4v Be:
Cocoaで、こういう感じの日本語ドキュメントのサイトはありませんか?
http://www.microsoft.com/japan/msdn/library/

http://developer.apple.com/
の下を探したのですけど日本語のが見当たりません。
95 Name: 名称未設定 [] Date: 02/12/08 20:58 ID: VuYRBze7 Be:
>>94
オライリーがイイ仕事してる。本をかいな。
アップルジャパンは昔からその手の情報の翻訳はほとんどダメだ。やってない。
96 Name: 名称未設定 [sage] Date: 02/12/08 22:10 ID: zAei9Sp0 Be:
日本語DOQはMSが一番!

・・いやマジで。

>>95
AdobeやRealやNewTekなどもSDK資料は英語。
OracleはDBの付属資料は流石に翻訳されているが
ApplicationServerSDKは未翻訳だった;今はどうか?

資料ローカライズでMSに張り合えるのはIBM位か・・
97 Name: 名称未設定 [sage] Date: 02/12/08 22:38 ID: 7ymdFHGd Be:
>>94
公式で翻訳されている文献はあんまりない
http://developer.apple.com/ja/techpubs/

Cocoaのリファレンスの翻訳ならばここ
http://www.oomori.com/cocoafw/index.html
98 Name: 名称未設定 [] Date: 02/12/08 22:51 ID: pCWmqpCj Be:
結論:MS > IBM >>>>>{超えられない壁}>>>>> Apple

つか、そもそもMSと違って、売りっぱなしが基本姿勢だから、
活用の為の資料提供なんかする会社じゃないっての(藁
釣った魚に餌は与えないっつーか…。
99 Name: 名称未設定 [sage] Date: 02/12/09 00:38 ID: EWG83ZBe Be:
>>92
Foundationのみですませるなら、そうなりますね。

Core FoundationのXML Serviceを使えば、Tree構造として
展開、アクセスできるから、複雑な構造のXMLを処理するの
なら、こちらをどうぞ。
100 Name: 100 [sage] Date: 02/12/09 02:09 ID: oRWuzLq0 Be:
XMLServiceってDOMだけなの?
101 Name: 警戒宣言 [sage] Date: 02/12/11 02:23 ID: WjsHSuKs Be:
念入りすぎるほど
保守。
102 Name: 名称未設定 [sage] Date: 02/12/11 18:22 ID: gZWMy9lt Be:
そしてさらに保守。
103 Name: 警戒宣言 [sage] Date: 02/12/12 00:41 ID: OzDkU41w Be:
解除。
危機は去った。スレ違いスマソ
104 Name: 名称未設定 [sage] Date: 02/12/12 14:11 ID: cmdLCwuG Be:
>>100
ちょうどHMDTにその情報載ったよ。
DOMでもSAXでも無いけど両方に似たようなのがあるらしい。
105 Name: 名称未設定 [sage] Date: 02/12/12 17:37 ID: cb9F24RT Be:
HMDTって・・・・なに?
106 Name: 名称未設定 [] Date: 02/12/12 19:12 ID: i36lFTBu Be:
>105
ttp://homepage.mac.com/mkino2/
107 Name: 名称未設定 [] Date: 02/12/13 00:26 ID: GEb3wLMf Be:
DOMでもSAXでもないXMLパーサ…そんなアフォなシロモノが実在するとは…。
108 Name: 名称未設定 [] Date: 02/12/13 02:29 ID: SFIkYX1x Be:
Cocoa-Javaでホットキーの登録方法を教えて下さい。

HMDT(>>105,106参照)でやり方が書いてあるんだけど全くObj-Cが
分からないので理解が追い付きません。
それでも必死で読み続けてみて分かったことはCarbon Eventを使うということのみ。。

そもそもJavaからCarbonって使えるんですか?

一応スレ違いでは無いと思うのでここに書かせてもらいました。
109 Name: 名称未設定 [sage] Date: 02/12/13 15:14 ID: zT151Epi Be:
>>107
全てのXMLパーサがDOMかSAXかじゃないと駄目だと思っているのかよ。

>>108
Core FoundationはObjective-Cじゃない。
C++でもない。ただのCだ。

つーか、Cocoaじゃない。
JavaでXMLを扱いたければJAXP使え。
HDMTにも書いてあるけど今のCFXMLは
XMLパーサとしては原始的すぎて不完全。
システムに標準で付いてくるから
CarbonやObjective-Cで即使えるってのが利点。
110 Name: 名称未設定 [] Date: 02/12/13 20:11 ID: JyhG0V93 Be:
結論:MSXML >>>>>>>>>>>>>>>>>>>>>(越えられない壁)>>>>>>>>>>>>>>>>>> CFXML
流行のXMLでこの体たらくは、まさにMicrosoftとAppleの技術力格差を象徴してるな。
111 Name: 名称未設定 [] Date: 02/12/13 20:28 ID: Q1sivQp6 Be:
↑ expat の位置はどのへん?
112 Name: 108 [] Date: 02/12/14 02:31 ID: 1IIcBngU Be:
>>109
反応さんくす。

>Core FoundationはObjective-Cじゃない。
>C++でもない。ただのCだ。

っていうのはつまり
『自分でCとJavaの橋渡しをしなさい』
ってこと?

了解です。
113 Name: 名称未設定 [] Date: 02/12/14 02:48 ID: ZMKB0U/X Be:
がんがれ。
114 Name: 名称未設定 [] Date: 02/12/14 10:31 ID: 1Re06XJ0 Be:
>>112
了解したんなら余計なお世話かもしれが…
Javaでプログラム書くんなら、素直にJavaで書かれたXMLパーザを
使えばいいじゃん、と >>109 は言ってる。
115 Name: 名称未設定 [] Date: 02/12/14 12:16 ID: yvQkSo92 Be:
Javaでプログラム書くなら、Windowsの方が何かと便利。
116 Name: 名称未設定 [] Date: 02/12/14 15:09 ID: 1UHjsgj3 Be:
JavaにはSolaris。コレ、最強。
117 Name: 名称未設定 [] Date: 02/12/14 15:15 ID: cjstDqhD Be:
風呂釜。これ。
118 Name: 名称未設定 [sage] Date: 02/12/14 15:18 ID: tjtGusRQ Be:
VisualC++で書いてデバッグしてMacでコンパイル&リリース
これ最強(SDLを使う時)
119 Name: 名称未設定 [sage] Date: 02/12/14 15:37 ID: 1Re06XJ0 Be:
ココハココアスレ
120 Name: 名称未設定 [sage] Date: 02/12/15 15:59 ID: KzOJ/Uqg Be:
CocoaGesturesってどう言う仕組みで動いているんですか?
121 Name: 名称未設定 [sage] Date: 02/12/17 15:23 ID: tJ8gR1x1 Be:
>>120
分からないからせめて・・・・

保守!
122 Name: 名称未設定 [sage] Date: 02/12/18 23:34 ID: 5nVxa2G+ Be:
消えて欲しくないから保守!

かといって今ここで聞きたいことも無いし。。
だれか話題提供プリーズ。
まぁ、まったりしてていいけどネ。∞
123 Name: 名称未設定 [sage] Date: 02/12/19 17:32 ID: Urax7ARa Be:
>>122
CW最新版の割れ物は何処にありますか?
124 Name: 名称未設定 [sage] Date: 02/12/20 04:48 ID: vKzqlyjj Be:
分からない・・・・。ゴメンヨ
125 Name: 名称未設定 [sage] Date: 02/12/20 10:15 ID: qp5IZPgE Be:
>>123
CWlite
126 Name: 名称未設定 [sage] Date: 02/12/20 16:58 ID: tgbMO7Wq Be:
デベロッパツールが新しくなったので皆さん気合い入れて落としましょうw
127 Name: 名称未設定 [sage] Date: 02/12/20 17:05 ID: jM3eTAIc Be:
を、ほんとだ。
自動インデントを有効にするとぼろぼろおちるの
なおってるかなぁ
128 Name: 名称未設定 [sage] Date: 02/12/20 22:29 ID: Va/6rg+s Be:
300メガでかい
129 Name: 名称未設定 [sage] Date: 02/12/20 23:00 ID: IHLxfHGg Be:
新しいのって日本語ローカライズ対応してる?
130 Name: 名称未設定 [] Date: 02/12/21 00:47 ID: xXHMzR+o Be:
アクセス拒否られるなぁ。落とせないよー。
131 Name: 名称未設定 [sage] Date: 02/12/21 13:39 ID: 7u2vBk5Z Be:
>>130
 パスワードの期限が切れてるんじゃない?

#定期的に新しくするのって面倒。
132 Name: 名称未設定 [sage] Date: 02/12/21 19:14 ID: jL6qu1gl Be:
>>129の疑問が自分も気になる。誰か教えて。
133 Name: 名称未設定 [sage] Date: 02/12/21 19:30 ID: SQXJVlOr Be:
PBは以前から日本語化していた訳だが、他のローカライズは
http://developer.apple.com/tools/macosxtools.html#breadcrumb
を見る限りは無いみたいだな。

個人的にはスクリプトエディタの新バージョンβに興味あり。
134 Name: 名称未設定 [] Date: 02/12/22 00:10 ID: 0D51mckv Be:
本当にAppleは日本語開発者に冷たいな。
つか、やる気ないだろ?
135 Name: 名称未設定 [sage] Date: 02/12/22 13:48 ID: rexa71Qw Be:
 雑誌の画面写真でしか見た事ないけど、NEXTSTEP時代のPBには
クラスやメソッドの解説が日本語になってたよね?
136 Name: 名無しさん@Emacs [sage] Date: 02/12/22 15:29 ID: WAow/daK Be:
あれはキヤノンががんばってたんでは?
137 Name: 名称未設定 [sage] Date: 02/12/22 16:01 ID: ubMHsN0Y Be:
最近ようやくtech notesのCocoa物が翻訳されてるのみて、を~やっときたか~って感じでしたが。Cocoaで翻訳されてるのは2個しかない罠(藁。
てか日本人の開発者ってCarbonとかしかやっとらんと思われてるんだろーか?
tech notesもQ&AもCarbon絡みとかQT絡みばっかだよねぇ。
CocoaのDiscoverOPENSTEPは今のCocoa入門のPDFより出来がいいからあのままでいいけど(をい。
AppKitとFoundationKitのReferenceとっとと翻訳しろ~~~(><)
138 Name: 名称未設定 [sage] Date: 02/12/22 21:50 ID: f9UAkvm2 Be:
リファレンスの翻訳よりむしろ、逆引き系のドキュメントが欲しい。
InsideMacにあって、Cocoaのドキュメントにないのはそこだよ。と
りあえず英語のままでかまわんから‥
139 Name: 名称未設定 [] Date: 02/12/23 00:30 ID: 3O1qjF8Q Be:
Windowsとのソフトの量の差の原因はこれか…。
140 Name: 名称未設定 [sage] Date: 02/12/23 00:39 ID: vLosFQ0u Be:
ユーザ数の差だろう...
141 Name: 名称未設定 [sage] Date: 02/12/24 00:45 ID: C8SMmhAk Be:
シェアの差は開発者の人数の差でもあるからなあ
142 Name: 名称未設定 [] Date: 02/12/24 22:45 ID: YZLUCAKe Be:
ただのユーザだったけど、プログラミングに興味が出た、って人物が
英語の壁で玉砕のケースが多いモヨリ。
Windowsには、酷評されつつも安易で使いやすいVBがあるし。
143 Name: 名称未設定 [sage] Date: 02/12/25 02:50 ID: RYOVzj/X Be:
プロジェクトビルダーとか付ける位なら教科書位出してくれてもいいのに。
中途半端。
144 Name: 名称未設定 [sage] Date: 02/12/25 02:51 ID: RYOVzj/X Be:
各国版の、って事ね。せめて主要国の。
145 Name: 名称未設定 [sage] Date: 02/12/25 03:46 ID: D/CIxqso Be:
新しいデベツールで
フルスクリーンになるアプリを実行して終了すると
メニューバーの表示がおかしくのは折れだけですか?
146 Name: [sage] Date: 02/12/25 11:04 ID: 25KUSDdK Be:
>>143
ProjectBuilderないと魅力半減。
教科書がほしいなら本で買ってもいいのでは。
147 Name: 名称未設定 [sage] Date: 02/12/25 21:37 ID: mPpb3QIm Be:
さいきんcocoa本が増え始めたようだよ 日本語の
148 Name: 名称未設定 [sage] Date: 02/12/28 11:18 ID: 4kFcyKqB Be:
1,2冊たまたま同時期に出ただけだろ。
149 Name: 名称未設定 [] Date: 02/12/29 02:29 ID: alltZCeg Be:
つうか、増えてもどれも基本的な事に付いて説明してて、
内容が結構重複してんだよな。
150 Name: [sage] Date: 02/12/29 03:08 ID: x+lnhwDZ Be:
初心者向けのばっかりだよね。
リファレンスとか、Tips集とか、はまりどころ集とかほしい。
151 Name: 名称未設定 [] Date: 02/12/29 09:23 ID: GKyK1UDq Be:
Cocoa を始めてから自分で調べる力がつきました。
個人的には本がすぐに出ないことが幸いしたような気がする。

そろそろまとまった内容のCocoa本が見たいけどね。
152 Name: 名称未設定 [] Date: 02/12/30 23:28 ID: ngMA608/ Be:
>>151が「調べる力」なるものを身に付けている間に、
ドザはMFCアプリを完成させてる罠
153 Name: 名称未設定 [sage] Date: 02/12/30 23:46 ID: c/SVydmr Be:
ハア?
154 Name: 名称未設定 [sage] Date: 02/12/31 01:04 ID: fCF4nYhQ Be:
>>152-153 ドザはMFCの底なし沼にはまっている罠
155 Name: 名称未設定 [sage] Date: 02/12/31 01:19 ID: TMgO2I0o Be:
底なし沼とは具体的に何を指しているん?
156 Name: 名称未設定 [sage] Date: 02/12/31 01:26 ID: kFoGGNld Be:
調べる力が力尽きるほど調べても調べても調べ尽くせない調べのことでは?
157 Name: [sage] Date: 02/12/31 02:37 ID: 1XWAiJ80 Be:
MFCとくらべたら、Cocoaのほうが洗練されてるよね。
でも、.NETと比べたらあやしいところかなぁ。
158 Name: 名称未設定 [sage] Date: 02/12/31 02:58 ID: 5U3cQxzv Be:
.NETよりJavaのほうがイイって本当?
159 Name: [sage] Date: 02/12/31 03:25 ID: 1XWAiJ80 Be:
>>158
価値観による
160 Name: 名称未設定 [sage] Date: 02/12/31 12:58 ID: MZ8v8kXZ Be:
やっぱCちゃんと勉強してからじゃないとObjective-Cはキツイかな
161 Name: 名称未設定 [sage] Date: 02/12/31 13:14 ID: IssqW5mC Be:
C自体はさほど難しい言語じゃないんだけど、
Obj-Cの解説書ってプログラマーならアタリマエに知ってるんだろう的
用語が連発するんでちょっと難しくないですか。
162 Name: [sage] Date: 02/12/31 15:57 ID: 1XWAiJ80 Be:
Objective-Cがはじめてのプログラミング言語という人向けの
本が無いのですな。だれかかきましょう:-)
そういえば、阪大は(むかしは?)1年のときにObjective-Cを
ならったとかどうとか。そのときの教科書の流出とかないのかな。
163 Name: 名称未設定 [sage] Date: 02/12/31 22:13 ID: MZ8v8kXZ Be:
うん。
こないだC解説してるページ見て(void)とかすらやっと理解した。
載ってないんだもん。

と言う訳で今日アマゾンにC(C言語プログラミング" ハーベイ・M. ダイテル )と萩原本を注文しました。
164 Name: 名称未設定 [sage] Date: 02/12/31 23:13 ID: Zmfhjh1x Be:
萩原本は良いよ。初学者向けかどうかちょっとわからないけど、
Objective-CでCocoaプログラム書くつもりなら、いずれは参考にな
るときがくるでしょう。

といいつつ、本心では、メモリ管理をほとんど気にしなくていい言
語の方が初学者には向いてるんじゃないかと思う。どのくらい本気
なのかとか、目的にもよるが・・・
165 Name: [sage] Date: 02/12/31 23:17 ID: 1XWAiJ80 Be:
>>164
萩原本はいいですな。うんうん。
わたしもメモリ管理気にしない言語のほうがいいかな~と思ったのですが、
最初は不便な環境でいろいろ考える習慣をつけたほうがいいので、
ちょうど Objective-C くらいがいいのかも。

#うちの学校では B1 前期で scheme やって、後期に C をやるのですが、
#なにもわかってないくせに C ってつかえね~とか言う厨が....
166 Name: 名称未設定 [sage] Date: 03/01/01 02:43 ID: FB0kK2l3 Be:
メモリ管理しなくていい言語なんてあるんすか。
参考になります押忍。

スレ中前述の様にObje本はせいぜい中級者向け(萩原本)迄しか無いのがつらい。
167 Name: 名称未設定 [sage] Date: 03/01/01 13:06 ID: zJdSzk0e Be:
>>166
押忍!
なんつーか「富豪的プログラミングで構わないならば」メモリ管理
を気にしなくてよい言語ってことです。いっぱいあるよ、
Java Ruby Python Perl Scheme lisp ...。
Java, Ruby, Python, Perlあたりは、その気があればCocoa
のプログラミングに使えるみたい。

Cocoaプログラミングに使えそうな言語へのリンク
ttp://www.fscript.org/links.htm
富豪的プログラミング
ttp://www.csl.sony.co.jp/person/masui/fugo.html
168 Name: 名称未設定 [] Date: 03/01/01 18:34 ID: 7KUkRcR3 Be:
え!!
PerlがCocoaに使えるんですか?ていってもどういう意味なのかわからない程度の素人なんですが。
普段Perlはテキスト処理用のスクリプトとして使ってます。
169 Name: 名称未設定 [sage] Date: 03/01/01 23:08 ID: KJRrImHU Be:
富豪的、っていうより
RubyやJavaみたいにメモリ管理の面倒(ガベージコレクションとか)
みてくれる言語のほうが初学者には楽、ていう意味だと思ったんだけど。
170 Name: 名称未設定 [sage] Date: 03/01/01 23:53 ID: oVRtSIEp Be:
>>168
CamelBone (perl)
ttp://camelbone.sourceforge.net/
RubyCocoa (ruby)
ttp://rubycocoa.sourceforge.net/
PyObjc (python)
ttp://pyobjc.sourceforge.net/
171 Name: 170 [sage] Date: 03/01/02 00:00 ID: V0oTkhiy Be:
スマソ、まちがえた
CamelBones (perl)
ttp://camelbones.sourceforge.net/
172 Name: 163 [sage] Date: 03/01/03 03:54 ID: hWNCnpWQ Be:
まだこない。発送は当日にされたらしいが、
ペリカンって正月休みだっけ?

と、発送スパンをメモしとく。
173 Name: 名称未設定 [sage] Date: 03/01/03 23:27 ID: nk3C7Fqb Be:
サービスを提供するアプリを作りたいんですが、
例えば

サービスメニューから呼び出す

提供側のアプリでユーザーが何か操作をして、
「終了」ボタンが押される

呼び出した側で結果が挿入される

みたいな事をやりたい時はどうすればいいのでしょうか?
174 Name: 173 [age] Date: 03/01/03 23:27 ID: nk3C7Fqb Be:
age
175 Name: 名称未設定 [] Date: 03/01/04 02:09 ID: 5zdvt1wZ Be:
>>173
すいません、いってることがよく分からないのですが。。。
サービスメニューっていうのはアプリケーションメニュー(アプリケーション名
がついたメニュー)の中の『サービス』の項のことでいいの?

なにか具体的な例が欲しいな。
176 Name: 172 [sage] Date: 03/01/04 08:32 ID: LQxVcN6Q Be:
昨日朝9時頃C本到着。
と止めようかと思ったけどそれでもスレ汚しメモ。
177 Name: 173 [age] Date: 03/01/04 13:45 ID: JsoTqK/7 Be:
>>175
具体的もなにも、そのまんまなんですが……
例えば

TextEdit側でテキストを選択して、
サービスメニューから「キーワードに色付け」を呼び出す

色付けサービスを提供するアプリで、
キーワードを指定して行くと同じ文字列に色がついていく。
キーワード全部に色が付いたらユーザーが「色付けを終了」を押す

TextEditに色付けの終わったリッチテキストが挿入される

て感じですが。

色んなCocoaの入門書を読んでみても、
サービスの提供にユーザーが介入しないサンプルばっかりで困ってます。
178 Name: 名称未設定 [] Date: 03/01/05 02:10 ID: oiKOy1Xw Be:
一つ聞きたいことがあるんですけど、MacOSXのインストーラみたいに
一つのウィンドウの中でビューをころころ変える時ってあるじゃないですか。
例えば10個のNSViewがある時にそれをプログラム側で
NSWindow.setContentView(view1)みたいにやりますよね。

その時に各ビューにいろいろなコントローラ(ボタンとか)があるとアクション
を受け取るクラスが必要になります。みなさんだったらこの受け取り側のクラス
を一つにしますか?それとも複数(例えば各ビューごと)に分けますか?

もちろん時と場合によるんでしょうけど、いままで自分は一つのクラスで
やってたんですけどビューが多くなるとあらゆる処理が混ざっちゃって。。
分けるのもありかなぁって思ったんですよ。

オブジェクト指向的には分けるのが当たり前な気もするのですが・・・。
どうでしょうか?
179 Name: [sage] Date: 03/01/05 03:10 ID: 0hPLvfw4 Be:
>>178
Objective-C的にはCategoryでわけておくのもいいでしょうか。
結局、Viewの相互依存度によって柔軟に対応することに
なるのでしょうな。
180 Name: 178 [] Date: 03/01/05 04:48 ID: oiKOy1Xw Be:
>>179
レスありがとうございます。

なるほど確かにそうですね。
プログラムは常に柔軟にってことですね。
依存度は低め(決して0ではないですが)なので分けてやってみます。
今紙にオブジェクトの依存関係を書いてみたんですがうまくやれば
きれいにまとまりそうです。

がんばってみますね。

それにしても『プログラムを書く』ということと『アプリケーションを作る』
っていうのは二つの間に壁がありますね。必死で勉強します。
181 Name: 名称未設定 [sage] Date: 03/01/08 19:34 ID: LIvgpbkk Be:
少なくともsafariのソースを読んで意味が理解出来る位になりたい・・
182 Name: 名称未設定 [] Date: 03/01/09 00:06 ID: dvmn6aeG Be:
>>156
その説明では、何も判りません。
183 Name: 名称未設定 [] Date: 03/01/16 02:39 ID: 89tBpTdi Be:
ある文字列をEUCに変換したいのですが、

NSString *str = @"あいうえお";
NSData *dat = [str dataUsingEncoding:NSJapaneseEUCStringEncoding];

これでEUCのNSData型にして、そのあとNSStringに戻す方法は
どうしたらいいのでしょうか?
また、エンコードの方法はこの方法であっているでしょうか?
184 Name: 名称未設定 [sage] Date: 03/01/16 09:10 ID: oo03MoCL Be:
>>183

そこまで分かっているなら、
- (id)initWithData:(NSData *)data encoding:(NSStringEncoding)encoding
を使えばいいことも推測できそうなものですが。
185 Name: 名称未設定 [sage] Date: 03/01/16 21:33 ID: IxtFqHx0 Be:
直接Cocoaでなくてあれなんですが。
みなさんプロジェクトのバックアップとかってどうしてるんですか?
今んとこソーズいじる前に必ずtar.gzで丸ごと保存してるんですが、
何かいい方法あります?
186 Name: 名称未設定 [sage] Date: 03/01/16 21:58 ID: oo03MoCL Be:
>>185

CVSを使うのがおすすめ。
http://www.a2zsd.co.jp/~a2zsd217/book/cvs/book1.html

コマンドラインからレポジトリを用意して、プロジェクトをIMPORTしておけば、
あとはProjcet Builderから差分を確認したり元に戻したりすることが簡単にできます。
187 Name: 185 [sage] Date: 03/01/16 23:16 ID: IxtFqHx0 Be:
>>186
早速試してみました。
ちとこむずかしくて手こずりましたがなんとか導入できました。
んでも実際のプログラム以前にCVSに手こずる罠。。。

ちなみに教えていただいたページ以外にもCVSで検索してみたんですが
ttp://www.linkclub.or.jp/~tumibito/soft-an/cvs/cvs-man/cvs-ja_toc.html
(これって、DevelopToolsでインストールされるCVSのドキュメントの翻訳?)
ここもとても参考になりました。

とにかく186さん、ありがとうございます!
188 Name: 名称未設定 [sage] Date: 03/01/17 04:52 ID: iae4P0gQ Be:
>>185, 186
いままで何となくCVSに手を出しそびれていた俺に踏み出す勇気をくれた
お二人さん『アリガトウ』
俺も今夢中でttp://kahori.com/j-cvsbook/j-cvsbook.htmlを読んでた。
まだまだ実用的なことはできないけどがんばるよ。
189 Name: 185 [sage] Date: 03/01/17 10:54 ID: lcNODBLM Be:
ちと疑問に思ったんですが、一つのリポジトリにたいして
複数のプロジェクトをIMPORTしてもいいんですか?
それともプロジェクトごとにリポジトリを作るの?

間抜けすぎる質問らしく解答を見つけられない...
190 Name: [sage] Date: 03/01/17 11:04 ID: LipkprQm Be:
>>189
別に問題ないのではないか。
#なにが問題なのかわからん・・・。
191 Name: 185 [sage] Date: 03/01/17 12:08 ID: lcNODBLM Be:
>>190
即レスありがとう。
疑問氷解。

>#なにが問題なのかわからん・・・。
反省。
192 Name: 188 [sage] Date: 03/01/17 14:47 ID: iae4P0gQ Be:
>>189
俺も全く同じことでつまずいた。
>>188にあるサイトにそこらへんのことが少し書いてありますよ。
193 Name: 185 [sage] Date: 03/01/17 16:52 ID: +NX+CZKg Be:
>>188
重ね重ねありがとうございます。
読んでて分からんところは今に分かるだろうと、
思いっきり飛ばし読みしてます。

ついでにCVSググってて、こんなん見つけました。
ttp://www.sente.ch/software/cvl/
CVL is a graphical user interface to CVS most often used commands.

以上、Cocoaちっくな話題でなくすんませんでした。
194 Name: 名称未設定 [sage] Date: 03/01/17 18:15 ID: HweL1539 Be:
terminalでCVSROOT(とCVS_RSH)を設定してから、
cvs loginして
openでPBを蹴ってやればリモートCVSも使えるよ。

ssh使ってる場合はパスフレーズ無しにしないとだめだけど。
195 Name: 名称未設定 [sage] Date: 03/01/18 07:00 ID: giUYiAl2 Be:
ProjectBuilderって'\'(円記号)の表示できなくない?

C言語の勉強をしてみよう!と思って教本買ってきたんだけど
いきなりつまづいてしまった。

#include<stdio.h>
int main()
{
printf("\\");
return 0;
}

だと、\←バックスラッシュがぽつんと表示される。
196 Name: 名称未設定 [sage] Date: 03/01/18 10:03 ID: Qdc5gDs2 Be:
>>196
\と¥の関係について
もうちょっと勉強しよう!

というかなんで\でなくて¥でないと
ダメなんですか?
197 Name: 名称未設定 [sage] Date: 03/01/18 16:12 ID: ALrZXQoJ Be:
プロジェクトビルダーでコード入れてるだけでやたらと落ちまくる
人ってどれくらいいるのか? オレは作業できんくらい落ちまくる。
一文字入れて落ち、一行入れたと思ったら落ち、改行できたと思ったら
落ちる。騙し騙しやってるけど、みなさんもそんな感じですか?
198 Name: 名称未設定 [sage] Date: 03/01/18 17:00 ID: 3WVxlwou Be:
>>197
>プロジェクトビルダーでコード入れてるだけでやたらと落ちまくる
>人ってどれくらいいるのか?

>>127をよく読もう。
199 Name: 名称未設定 [] Date: 03/01/18 18:16 ID: MRKdqgWl Be:
>>198
小春日和のような人
200 Name: 名称未設定 [sage] Date: 03/01/18 18:43 ID: Hl9LmSa+ Be:
200げっちゅ
201 Name: 名称未設定 [sage] Date: 03/01/19 00:02 ID: qkoizFWS Be:
Project BuilderからできるCVS操作って限られてるなぁ。
( ひ と り ご と だ す )
202 Name: 名称未設定 [] Date: 03/01/19 21:05 ID: fU25KtyI Be:
おいっ!
いまフジテレビでcocoa特集やってるぞ!見れ見れ!
203 Name: 名称未設定 [sage] Date: 03/01/19 21:19 ID: WKI8D/qq Be:
2の煽りが消されてんじゃん。ワラタのに。
204 Name: 名称未設定 [sage] Date: 03/01/19 21:30 ID: qkoizFWS Be:
>>202
分かってはいてもちょっと見ちゃったよ。(w
205 Name: 名称未設定 [sage] Date: 03/01/20 18:22 ID: t2BhBQWd Be:
鶴薗さんフレーム使うの止めて下さい。
206 Name: 名称未設定 [] Date: 03/01/22 02:51 ID: 4maCModN Be:
『Cocoaはさっぱり!』よ永遠に。
age

そういえばCocoa/JavaでFrameworkを作りたいんですけど
headerとかが必要らしいけどどうすればいいのかなぁ?
自分用にカスタムビューをいっぱい作ってフレームワークにしたら
便利だと思ったんですけど…。
207 Name: 名称未設定 [sage] Date: 03/01/22 10:58 ID: 1+Qkm5Xj Be:
テキストエディタを半透明にすることができない。
黒背景&半透明のターミナルが気に入っているので同じようなものを作ろうと思ったんだが、
NSTextViewのAtributesからBackgroundのopacityをいじっても透過するようにならない。
下地のNSeWindowにはカラーをいじる項目はないし、どうしたらいいのだろう・・・

208 Name: 名称未設定 [sage] Date: 03/01/22 11:40 ID: 4maCModN Be:
>>207
とりあえずNSWIndowを透明にするなら
window.setBackground( NSColor.clearColor() );
window.setOpeque( false );
setHasShadow( true );

でいける。(Javaでごめん、何となく分かるでしょう

ちょっと時間がなくて半透明まで書けない。
ごめんよ、でももし参考になれば。。。
209 Name: 名称未設定 [sage] Date: 03/01/22 11:41 ID: 4maCModN Be:
あれ?2重書き込み?
重ね重ね、ごめん。
210 Name: 207 [sage] Date: 03/01/22 12:26 ID: 1+Qkm5Xj Be:
>>208
ありが㌧。

具体的にはNSwindowのクラスをインスタンス化して
アウトレットをNSWindowに接続、

で、呪文を唱えると言うことなのだろうか。。

昼間はもう時間がないので今夜試してみます。
211 Name: 名称未設定 [sage] Date: 03/01/22 14:10 ID: JQ+stKB+ Be:
>>210
NSWindowをサブクラス化。
setBackground、setOpequeをオーバーライド。

IB
クラスのヘッダファイルを読み込み。
ウインドウのカスタムクラスを変える。
212 Name: 山崎渉 [(^^)sage] Date: 03/01/23 02:20 ID: Kx2M+3Qk Be:
(^^)
213 Name: 208 [sage] Date: 03/01/23 07:01 ID: wK5RAK5s Be:
>>210
がんばって!
>>211が言うようにサブクラス化した方が吉!
214 Name: 207 [sage] Date: 03/01/23 23:58 ID: WDG0Ml0l Be:
とりあえずこんな感じで書いてみた。(JavaはサパーリなのでObj-C)

#import "MyWindow.h"

@implementation MyWindow
- setBackgroundColor
{
[self setBackgroundColor:[NSColor clearColor]];
return self;
}
- setOpaque
{
[self setOpaque:FALSE];
return self;
}

@end

MyWindowはNSWindowのサブクラス。MyWindow.hは何も変更なし。
で、とりあえずコンパイルは通るがもちろん透明にはならない。
どこかでwindowを初期化しないといけないとは思うのだが
initWithContentRect:styleMask:backing:defer: はドキュメント読んでみてもよく分からない・・・

215 Name: 207 [sage] Date: 03/01/24 00:01 ID: lHQMFngz Be:


 ∧||∧
(  ⌒ ヽ  
 ∪  ノ 
  U U

216 Name: 207 [sage] Date: 03/01/24 02:40 ID: lHQMFngz Be:
やっとできた。awakeFromNibを使った。

#import "MyWindow.h"

@implementation MyWindow
-(void)awakeFromNib
{
[self setBackgroundColor:[NSColor clearColor]];
[self setOpaque:FALSE];
}

@end

こんな感じ。いろいろ教えてくれてどうもありがとう。
ようやく眠れる・・・

217 Name: 名称未設定 [] Date: 03/01/26 18:59 ID: IzKleeOY Be:
定期あげ
218 Name: 名称未設定 [] Date: 03/01/26 23:09 ID: O+/ffiFw Be:
NSStringに格納された
/Users/hoge/Desktop/
というUNIX式のパスを
Maciintosh HD:Users:hoge:Desktop:
というMac式のパスに変換する方法は無いものでしょうか。

ざっと調べた限りでは該当する機能がCocoaのクラスに見つからなかったので、
何か良い方法をご存じの方はご教示願えませんでしょうか。
219 Name: 名称未設定 [sage] Date: 03/01/26 23:20 ID: rEUgqX0Y Be:
ふつうに一文字ずつ調べてコロンに変換すればいいだけでは?
220 Name: 218 [sage] Date: 03/01/26 23:26 ID: O+/ffiFw Be:
>>219
その方法も考えたのですが、
起動しているディスクの名前を調べる方法が分からないので
断念してしまいました。
221 Name: 218 [sage] Date: 03/01/26 23:37 ID: O+/ffiFw Be:
あ、NSStringに格納されているのは
/Users/hoge/Desktop/というパスの決め打ちではなく、
実際にはどんなパスなのか不確定な場合です。
222 Name: 名称未設定 [] Date: 03/01/26 23:44 ID: rEUgqX0Y Be:
起動ディスクの名前を調べる方法?
AppleScriptで「StartupDisk」を使って名前を調べるってのはダメかな。
そこだけAppleScriptでテキストファイルに書き出すように組んで
起動時にいったん呼び出すとか、できないかな。

223 Name: 218 [sage] Date: 03/01/27 22:14 ID: 4opfdzsB Be:
その後色々と自分で考えてみた結果、

-(NSString*)getColonDelimitedPath:(NSString*)filename{
FSRef fRef;
FSRef pRef;
OSErr err;
HFSUniStr255 name;
NSMutableArray *nameArray=[NSMutableArray array];
BOOL isDirectory;

if (![[NSFileManager defaultManager] fileExistsAtPath:filename isDirectory:&isDirectory]) return @"";

err=FSPathMakeRef([filename UTF8String],&fRef,NULL);
if (err == noErr) {
while (1) {
err=FSGetCatalogInfo(&fRef,kFSCatInfoNone,NULL,&name,NULL,&pRef);
if (err != noErr) break;

[nameArray insertObject:[NSString stringWithCharacters:(name.unicode) length:(name.length)] atIndex:0];
fRef = pRef;
}
}

if ([nameArray count] > 1) [nameArray removeObjectAtIndex:0];
if (isDirectory) [nameArray addObject:@""];
return [nameArray componentsJoinedByString:@":"];
}

というメソッドを組んでUNIX流のパスMac流のパスに変換することができました。
Carbonは全く触ったことがないので、もっとスマートな方法があるかもしれませんが、
とりあえず解決した方法を報告しておきます。
長文申し訳ありません。
224 Name: 名称未設定 [sage] Date: 03/01/28 04:41 ID: O6299JZg Be:
そういえばUNIX流パスからFSSpecへ変換するコードを
QuickTimeのサンプルの一部としてどこかで見た記憶がある
Cocoaで取得したパスをFSSpecしか受付けないQuickTimeに
渡す方法として紹介されていた気がする
FSSpecが得られたらFSMakeFSSpecを繰り返せばいいんだけど
スマートじゃないやり方だなあ
それに長いファイル名だと名前の末尾がおかしくなっちゃうかもね
225 Name: 名称未設定 [sage] Date: 03/01/28 15:40 ID: VStRHzrc Be:
HTMLの読み込み方を説明してるページって無いでしょうか。
226 Name: 名称未設定 [sage] Date: 03/01/28 16:17 ID: NgRJ+NNu Be:
#include <stdio.h>
main() { FILE *fp = fopen("index.html", "r"); }
227 Name: 名称未設定 [sage] Date: 03/01/30 01:38 ID: RAb1dDyE Be:
>>225
質問の意味が若干曖昧なのですが、
「サーバに接続してデータをダウンロードしたい」という意味であれば、
NSURL *url=[NSURL URLWithString:@"http://www.apple.co.jp/index.html"];
NSData *data=[url resourceDataUsingCache:NO];
といった感じで実現できます。
228 Name: 名称未設定 [sage] Date: 03/01/30 21:21 ID: GOsOyZ0P Be:
HTMLの読み込み方って言ってるんだから
ttp://www.midi.co.jp/objc0.html
こんなんじゃないのか?
これだと読み込めないけど
229 Name: 名称未設定 [sage] Date: 03/01/31 00:55 ID: jSuCPtPg Be:
ttp://www.omnigroup.com/developer/sourcecode/
OmniHTMLはどうよ。
230 Name: 名称未設定 [] Date: 03/01/31 03:28 ID: nWV7f5Kl Be:
NSTextView で OR 検索はできないでしょうか?
文中に wordA か wordB があったら
そこだけ別の処理をしたいです。
231 Name: 名称未設定 [] Date: 03/01/31 10:36 ID: 7ArxHJrs Be:
>>230
ちょっと調べてないから分からないけど多分
自分で組むしか無いんじゃない。
perlで組めば難しくはないよね。
232 Name: 名称未設定 [] Date: 03/02/01 01:11 ID: 8bNReTRB Be:
>>230
Cocoaの標準ではできないっぽいけど、
>>229のURLにあるOmniFoundation フレームワークには
正規表現ライブラリがあるみたいだから、
それを試してみるというのはどうでしょう。
233 Name: 名称未設定 [] Date: 03/02/02 23:40 ID: ohzM6UCC Be:
過去ログを参考に、テーブルビューの項目をdeleteキーで削除できるようにしようと考えています。

前に、NSResponderのサブクラスを作って、tableViewに
[tableView setNextResponder:myResponder]
を送ってmyResponderでキーイベントを処理すればいい、っていう事が書いてあったんでこの通りにしました。
(ついでに[MyResponder setNextResponder:[tableView superview]も入れました。不要ですか?)

その結果、キーイベントを拾えるようにはなったのですが、このサブクラス中では[tableView selectedRow]の結果はいつも0しか返ってきません。おかしいなーと思い、試験的に
[tableView selectRow:3]
した直後に-selectedRowを送ってもやはり0が返ってきます。

何かやり忘れていることがあるのでしょうか。知恵をお貸し下さい..。
234 Name: 名称未設定 [sage] Date: 03/02/03 00:15 ID: Zlq3gph/ Be:
>>233
tableViewがnilなんじゃない?
235 Name: 名称未設定 [sage] Date: 03/02/03 00:14 ID: Zlq3gph/ Be:
>>233
tableViewがnilなんじゃない?
236 Name: 名称未設定 [sage] Date: 03/02/03 00:50 ID: 1DSE6VJD Be:
>>233
メニューにDeleteっていれてEquivを\Dにするのはダメ?
簡単だけど。。
237 Name: 名称未設定 [] Date: 03/02/03 01:01 ID: V9mQ7ebK Be:
>>234
ありがとうございます!確かにtableViewがnil(0x0)になってました。
さて・・なんでnilになってるんだろう・・。

tableViewからIBでMyResponderにつないでるのになー・・・なんかすごい初歩的な所で間違ってそうだな・・。

>>236
なるほど、そういうのもアリですね。確かに簡単!
できればdelキーだけで消去できた方が自然な操作かなーと思いますが、どうしても無理だった時に使わせていただきます。
238 Name: 名称未設定 [sage] Date: 03/02/03 01:20 ID: VAtApCIA Be:
Cocoaといえば
ケントデリカット
239 Name: 235 [sage] Date: 03/02/03 01:29 ID: Zlq3gph/ Be:
二重カキコスマヌ

>>233
tableViewがスペルミスってるか、
IBでMyResponderインスタンスを作ってるのに自分でallocしてるとか。

ぬるぽExceptionがでないことの弊害か。
240 Name: 236 [sage] Date: 03/02/03 02:25 ID: 1DSE6VJD Be:
>>233
別にメニューにこだわってるわけじゃないけど、メニューにキー登録すれば
delキーでもメニューでも同じ動作が出来るから俺は好き。
いや、アプリの特性にもよるし、今求められてる答えじゃないから気に
しないでおくんなまし。
241 Name: 名称未設定 [] Date: 03/02/03 20:23 ID: GA7OTv+E Be:
これからcocoaをやろうかと思います。
参考書を買おうと思うんですが、中村本とアーロンヒレガスとではどっちがいいですか?
242 Name: 名称未設定 [sage] Date: 03/02/03 20:37 ID: 4QHl9ldJ Be:
>>241
個人的にヒレガス本を勧めます。こっちのほうがきちんと解説していると思います。
ただこれを読むには最低限のC言語とオブジェクト指向の知識が必要です。ご注意を。
243 Name: 230 [sage] Date: 03/02/03 21:24 ID: geaLcjev Be:
>>231,232
どうもありがとう!
Omni のライブラリを調べてみます。
244 Name: 名称未設定 [sage] Date: 03/02/04 00:19 ID: a/2oqPVh Be:
>>242
ありがとうございました。
C言語なら分かりますがオブジェクト指向ってのは分かりませんが、ヒレガスにします。
245 Name: 233,237 [] Date: 03/02/04 00:28 ID: F8EYt14K Be:
>>239
ありがとう、答えは後者でした。
実はオブジェクト指向なるものが分かってない可能性が高いようで・・・(汗)
ばっちり動作しました。Cocoaって面白いですね~。

後に続く人のために、今回やった方法を書いときます。

(1)メインのコントローラーオブジェクト(mainController)のアウトレットにIBでインスタンス化したmyResponderを接続
(2)mainControllerの - awakeFromNibで
[tableView setNextResponder:myResponder]と
[myResponder setNextResponder:[tableView superview]]
を送る。
(3)myResponderの - keyDownメソッドで、押されたキーのキーコードを調べて、Delキーだったら[mainController deleteItemOfTableView(メソッド名は適当)]を送る。
(4) ( ゚Д゚)ウマー

かなり洗練されてなさそうだけど、とりあえず動いてるのでOKかな。
246 Name: 236 [sage] Date: 03/02/04 01:38 ID: RBgOtZQ6 Be:
>>245
おめでと!
247 Name: 名称未設定 [] Date: 03/02/04 22:13 ID: +MMCD9Ww Be:
Cocoaと直接関係ないかもしれないけど,MacOS Xってコマンドラインツールって
結構あるじゃないですか.UNIXの.で,その中の対話形式になっているツールを
CocoaのGUIで制御したいのですが,(フロントエンドですね)入力待ち状態になっ
ているコマンドラインツールに,どうやってGUIからコマンドを入力するんですか?
例えばrm -iってやると,yesかnoを聞いてきますよね.その時yesなりnoなりを
どうやってrmに渡したら良いのか...
(rm -fしろというのはなしでおねがいします.あくまで例なので.)
248 Name: 名称未設定 [sage] Date: 03/02/04 23:56 ID: /Om4uQAD Be:
>>247
パイプを使って標準入力に流し込みます。

CocoaはやっぱりのPerlスクリプトを実行するが参考になると思います。

waitUntilExitを使わず、performSelector:afterDelay:;なんかをつかって
標準出力をパイプを使って読み込んで、
必要であればパイプを使って標準入力に書き込む
という手順でしょう。
249 Name: 名称未設定 [sage] Date: 03/02/05 00:48 ID: nxCAebx7 Be:
>>247
> (rm -fしろというのはなしでおねがいします.あくまで例なので.)
rm -i hoge | yes :)
250 Name: 名称未設定 [sage] Date: 03/02/05 20:35 ID: MfIzGyu1 Be:
>>248
????????????.??????????????,Perl?????
???????????????.???????????????
???????,????????rm -i????,???ftp??????
??,??????????????????,????????.

fp = popen("rm -i hoge.txt", "w" );
fwrite( fp, "yes" );

?????C???????,???????????????????.



>>249
????????????.
???,???yes?rm -i??????????????????,
??????????...(???????????)
251 Name: 250 [sage] Date: 03/02/05 20:38 ID: MfIzGyu1 Be:
すいません.Safariバケです.

>>248
レスありがとうございます.紹介していただいたサンプルは,Perlスクリプト
が常に標準入力待ち状態ですよね.それだとたしかにうまくパイプで
いけそうですが,先にしめしましたrm -iだったり,例えばftpだったりする
場合,いつもいつも入力待ち状態ではないので,うまくいきません.

fp = popen("rm -i hoge.txt", "w" );
fwrite( fp, "yes" );

ベタベタなCですみませんが,このようなかんじのコードを書いています.

>>249
レスありがとうございます.
えーと,それはyesにrm -iの標準出力を流し込もうとしているので,
ちがうと思うのですが...(実際できませんでしたし)
252 Name: 250,251 [sage] Date: 03/02/06 21:36 ID: UYOxbH3T Be:
>>251
fwrite( fp, "yes" );
これはまちがいですね.
fprintf( fp, "yes" );
でした.すみません
253 Name: 名称未設定 [sage] Date: 03/02/07 21:39 ID: bNgyiqZA Be:
ほっしゅ
254 Name: 名称未設定 [sage] Date: 03/02/07 23:30 ID: 7wMX8TxP Be:
>>251
-(void)test:(id)sender {
NSTask*task = [[NSTask alloc] init];
NSPipe*output = [NSPipe pipe];
NSPipe*input = [NSPipe pipe];
NSString*rmPath = @"/bin/rm";
NSString*arg1 = @"-ir";
NSString*arg2 = @"/Users/hoge/hoge";
[task setStandardError:input];
[task setStandardInput:output];
[task setLaunchPath:rmPath];
[task setArguments:[NSArray arrayWithObjects:arg1, arg2, nil]];
[task launch];
while(YES){
NSData*inData = [[input fileHandleForReading] availableData];
if( inData && [inData length] ) {
NSData*outData = [NSData dataWithBytes:"yes\n" length:4];
[[output fileHandleForWriting] writeData:outData];
} else {
break;
}
}
}
????
% pwd
/Users/hoge
% mkdir hoge;touch hoge/hoge;touch hoge/foo;touch hoge/bar; ls hoge
bar foo hoge
%???????
% ls hoge
ls: hoge: No such file or directory
255 Name: 254 [sage] Date: 03/02/07 23:32 ID: 7wMX8TxP Be:
化けたが伝えたいことは分かるだろう。。。
256 Name: 名称未設定 [sage] Date: 03/02/08 01:04 ID: 4RKC1Ceg Be:
質問です。
NSArrayのリファレンスを読んでいたのですが、- indexOfObject:メソッドは
配列中の要素にisEqual:を送る事で「引き数の物と一致しているか」を判断する、とありました。
また、- indexOfObjectIdenticalTo:メソッドは、id値を頼りに一致しているかどうかの判定を行う、
とありました。

ところで、荻原本によるとisEqual:は「同じポインタを持つ物は等しいと見なす」とあります。
となると、結局上記の2つのメソッド- indexOfObject:と- indexOfObjectIdenticalTo:は、両方とも
オブジェクトへのポインタを頼りに「一致しているかどうかの判定」を行っているように見えます。
両者のメソッドは、一体何が違うのでしょうか?
257 Name: 名称未設定 [sage] Date: 03/02/08 01:49 ID: nc13ukt6 Be:
Obj-Cはわからないから詳しくは分からないけど
>isEqual:は「同じポインタを持つ物は等しいと見なす」
っていうのがなんか違う気がする。

isEqualってメソッドなんだよね(それさえもわからない。。)。
だからじぶんでisEqualを実装すれば実際には違うオブジェクト
(ポインタの異なるオブジェクト)でも同じとみなすことが出来る。
って事じゃない?
ごめん、説明下手で。
258 Name: 名称未設定 [sage] Date: 03/02/08 02:48 ID: 25lWZyO8 Be:
オブジェクトが同じ値であることと同じ物であることは違う。
オブジェクト指向プログラミングの本には必ず書かれている
基本概念なので調べてみましょう。
259 Name: 名称未設定 [sage] Date: 03/02/08 04:23 ID: PjXD2qHV Be:
「原則として」と書いてあるじゃん
260 Name: 256 [sage] Date: 03/02/08 06:27 ID: nZBs88YL Be:
みなさんのレスを参考にいろいろ考えてみて、以下のようなコードで実験してみました。
#import <Foundation/Foundation.h>

int main (int argc, const char * argv[]) {
 NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];

 NSNumber *testNumber;
 NSMutableArray *testArray = [NSMutableArray arrayWithCapacity:1];

 [testArray addObject:[NSNumber numberWithInt:3] ];
 testNumber = [NSNumber numberWithInt:3];

 NSLog(@"indexOfObject: result...%d\n",[testArray indexOfObject:testNumber]);
 NSLog(@"indexOfObjectIdenticalTo: result...%x\n",[testArray indexOfObjectIdenticalTo:testNumber]);

 [pool release];
 return 0;
}
実行結果は以下のようになりました。
2003-02-08 06:12:55.958 arraytest[885] indexOfObject: result...0
2003-02-08 06:12:55.960 arraytest[885] indexOfObjectIdenticalTo: result...7fffffff

isEqual:を使ったindexOfObjext:では0番目の要素がマッチしているにも関わらず、
ポインタを参照しているindexOfObjectIdenticalTo:ではNSNotFoundが返りました。

みなさんのおっしゃる通り、isEqual:は単にポインタを参照しているだけでは無い事が解りました。
ヒントを下さって、どうもありがとうございました。
261 Name: 256 [sage] Date: 03/02/08 06:57 ID: nZBs88YL Be:
ところで、手元にあるヒレガス本を読み返してみると、isEqual:は
やっぱり「ポインタが同じである場合」と書いてありました。
が、「例えばNSStringは(中略)このメソッドをオーバーライドしている」とありました。
上記の実験で使ったNSNumberも、どうやら同じようにオーバーライドしていたようです。

当初私もisEqual:に変更を加えているのでは、と思ったのですが、ところが、
NSStringやNSNumber(NSValue)のヘッダを見てみても、オーバーライドしたとは
明示されていませんでした。これが私が混乱した元になってしまったようです。
お騒がせしてすみませんでした。
262 Name: 名称未設定 [sage] Date: 03/02/08 10:03 ID: qe15kRor Be:
isEqual は、Cocoaのオブジェクト指向プログラミングの世界観を
理解する上で重要なので、おざなりな理解で済ませない方がいいよ。
素直にNSObjectのリファレンスを読みなさい。

- (BOOL)isEqual:(id)anObject

Returns YES if the receiver and anObject are equal, NO
otherwise. This method defines what it means for an instance
to be equal. For example, a container object might define
two containers as equal if their corresponding objects all
respond YES to an isEqual: request. See the NSData,
NSDictionary, NSArray, and NSString class specifications for
examples of the use of this method.

If two objects are equal, they must have the same hash
value. This last point is particularly important if you
define isEqual: in a subclass and intend to put instances of
that subclass into a collection. Make sure you also define
hash in your subclass.
263 Name: 251 [sage] Date: 03/02/08 20:01 ID: jKIPEwj2 Be:
>>254
コードまで書いていただいてありがとうございます.
そうか,パイプを入出力用に2つ作らないといけないわけですね.
そして入力を検知するまでループで待ち(ここがポイントかな?),
それから出力用のパイプにデータを流し込む.
ちょっと今は試せないのですが,分かりました.
しかし,世の中のコマンドラインツールのフロントエンドって,
みんなこういうことしてるんですかね.結構大変そう.
264 Name: 名称未設定 [] Date: 03/02/08 21:54 ID: k+NDFvP8 Be:
オンラインのURLをそのままHTML表示したりはできますかね?
265 Name: 248,254 [sage] Date: 03/02/08 23:39 ID: RHwyfaZZ Be:
>>263
このループはただ削除対象ファイルがなくなるまで回してるだけです。
実際にこのような処理をして、コマンドラインツールからの出力が遅れると
GUIの処理が全くされないので虹が回りはじめます。
で、performSelector:afterDelay:;とかを使えばどうですかということです。

-(void)hoge {
if( タスクからの出力がある ) {
出力にあわせて処理
}
if( まだ処理が残っている) {
[self performSelector:_cmd afterDelay:0.0];
}
}

みたいなことをやればGUIに処理が回りますので虹は回りません。
もちろんスレッドを使ってもいいですけど。
266 Name: 名称未設定 [] Date: 03/02/09 05:30 ID: 0I2KfkjL Be:
F1 キーを押したときに、
コンテキストメニューを表示させるにはどうしたらいいですか?
sendEvent で F1 キーを捕まえるところまではできています。
でも、メニューの生成・表示方法がわかりません。
267 Name: 名称未設定 [sage] Date: 03/02/09 10:02 ID: rBb3Vu6y Be:
[view menu];
ってやるとか?

なるかどうかは知らん。
268 Name: 名称未設定 [sage] Date: 03/02/09 14:39 ID: OynYE/8M Be:
>>266
ttp://infoatmackers.jp/cocoa/programming/programming19.html
でコンテキストメニューについて書かれてるみたいだね
269 Name: 266 [sage] Date: 03/02/09 22:32 ID: BA69j0bx Be:
>>268
それっぽいのができるかも! ありがとー。
270 Name: 256 [sage] Date: 03/02/10 02:40 ID: +aF+n49+ Be:
>>262
確かにその通りです。が、今まで訳に自信が無く、敬遠していました。
英和辞典と格闘しながら読んでみて、自分なりに実験を繰り返していましたが、
"isEqual:は単にプロトコルとして提供されているだけで、判定方法は各クラスが自由に設定できる"
と結論するに至りました。
int型変数testValueを持つ自前クラスTestClassを用意し、
[testArray addObject:[[TestClass alloc] initWithValue:3]];
obj = [[TestClass alloc] initWithValue:3];
[testArray addObject:obj];
NSLog(@"indexOfObject: result...%d\n",[testArray indexOfObject:obj]);
NSLog(@"indexOfObjectIdenticalTo: result...%d\n",[testArray indexOfObjectIdenticalTo:obj]);
とした所、結果は
indexOfObject: result...1
indexOfObjectIdenticalTo: result...1
でした(NSNumerを使った>>260では0番目がヒットしたのに!)。ここで、isEqual:を次のように定義した所、
-(BOOL)isEqual:(id)anObject
{
 if([anObject isMemberOfClass:[self class]])
  if([self testValue] == [anObject testValue])
   return YES;
  return NO;
}
結果は以下のようになりました。
indexOfObject: result...0
indexOfObjectIdenticalTo: result...1
>>260で使ったNSNumberも、おそらくこのような拡張を行っていたんですね。
勉強になりました
271 Name: 名称未設定 [sage] Date: 03/02/10 21:29 ID: Dew/Ojim Be:
>>270
なんとなく、微妙な理解の仕方のような気がする・・・
"isEqual:は単にプロトコルとして提供されているだけで、判定方法は各クラスが自由に設定できる"
という文章を読むと、単に実装の仕組みを理解しただけで、意味を理解できていないような気がします。
なので、一応説明しておきます。既に理解してたらスマソ。

isEqualは、実装上の仕組みうんぬんではなくて、
もう少し論理的なレベルで考えないと、きちんと理解することができません。
Objective-Cに限らず、Javaでもなんでもオブジェクト指向言語では、
「オブジェクトが同一」ということと、「オブジェクトの値が同一」ということを
はっきりと区別しています。
Objective-Cの場合、前者は、ポインタの比較で判定します。
後者は、isEqualを使って判定します。
例えば、同じ"abc"という文字列を表す別々のNSStringのインスタンスA,Bがあった場合、
前者で比較した場合はNOですが、後者はYESです。NSNumberもしかり。
しかし、クラスによっては、「オブジェクトが同一」の場合に「オブジェクトの値が同一」と
みなすのが適当なものもあります。
例えば、NSObjectなんかはそう。NSObjectは比較すべき値をもっていないから、
NSObjectのインスタンスa,bが同じ値である、というためには、
aとbが同一のオブジェクトかどうかを判定するしかないのです。
つまり、この場合は「オブジェクトが同一」の判定と「オブジェクトの値が同一」の判定は、
*たまたま*同じ結果になるのです。
実装だけをみれば同じことをしていても、この2つの意味はきっちり分けて
考えなければいけません。

NSArrayのindexOfObjectIdenticalToは引数と「オブジェクトが同一」のもののindexを取得し、
indexOfObjectは、引数と「オブジェクトの値が同一」のもののindexを取得します。
272 Name: 名称未設定 [sage] Date: 03/02/10 22:41 ID: a9ihwh+e Be:
関係ないけど、(NSObjectみたいな)ベースクラスのオブジェクト比較メソッドは
「常に真を返す」という実装である方が論理的に整合性が取れる、つう話が
JavaHouseで出ていたな。
273 Name: 名称未設定 [sage] Date: 03/02/11 02:05 ID: j79c6DbT Be:
>>272
その話、理由を聞かないとなんとも言えないが、わけのわかってない
人が言っただけのこと?
それともJavaHouseで複数の識者に支持されるような説得力のある話?
URLキボン
274 Name: 名称未設定 [sage] Date: 03/02/11 02:13 ID: j79c6DbT Be:
271ニハゲドウ
世界観を知った上で、現象を見て理解を確認するのはいいけど、
現象から理解しようとしすぎない方がいい。
とくに基本哲学的なところは。。。
275 Name: 名称未設定 [sage] Date: 03/02/11 15:55 ID: X1zYJQXj Be:
>>272
それ、俺も気になる。
もしその話なかで根拠になるものが書いてあったら教えてほしいです。。
もしくはURLが。。
276 Name: 256 [sage] Date: 03/02/11 22:18 ID: kNLtXHAM Be:
>>270
ああ、おかげでやっとisEqual:のリファレンスにあった
"This method defines what it means for an instance to be equal."の現す真意が理解できました。
確かにおっしゃる通りで、各クラスとも「同一と判定してほしい条件」は異なるはずで、時にはそれが
ポインタであったり(同じメモリ空間に格納された『同じもの』)、時にはNSStringやNSNumberに
代表されるような「表現している値」(あくまで『たまたま値が等しいだけ』)の場合がありますものね。
(しかも、状況によってはその都度判定条件を変える必要に迫られる可能性もあるでしょうし)。
それに「ポインタの比較 == 値の比較」としか表現できない状況も確かにありそうです。
//メソッドしか持たないオブジェクトの場合、こうするしかありませんよね。

で、isEqual:というのは「このクラスではこういう条件や状況で『同じ』と判定して欲しいなあ」を
定義するメソッドである、という訳なのですね。御丁寧にどうもありがとうございました。
277 Name: 名称未設定 [sage] Date: 03/02/11 22:20 ID: 8DblXC2f Be:
>>273
ひろみちゅが言ったんだよ。おれは納得した。

http://java-house.jp/ml/archive/j-h-b/046630.html#body
http://java-house.jp/ml/archive/j-h-b/047452.html#body
278 Name: 名称未設定 [] Date: 03/02/13 15:05 ID: YVSvw8xP Be:
java bridgeがうまく動きません。(obj-cからjavaを使いたい。)
http://developer.apple.com/techpubs/macosx/Cocoa/Legacy/JavaBridge/JavaBridge.3.html

HelloWorld.javaに
class HelloWorld {
int i ;
void HelloWorld(int e){ this.i = i ; }
int hoge(){ return this.i ; }
}

として、main.mに
#import <Cocoa/Cocoa.h>
#import <stdio.h>
int main(int argc, const char *argv[])
{
id e = [[NSClassFromString(@"java.util.HelloWorld") alloc] init : 5] ;
printf("%d",[e hoge]) ;
return 0 ;
}
としたんですがうまくいきません。ご教授お願いいたします。
279 Name: 278 [] Date: 03/02/13 15:09 ID: YVSvw8xP Be:
void HelloWorld(int e){ this.i = i ; }

void HelloWorld(int e){ this.i = e ; }

でした。すみません。
280 Name: 名称未設定 [sage] Date: 03/02/14 06:12 ID: YLK143md Be:
Obj-Cはわからんけど
>id e = [[NSClassFromString(@"java.util.HelloWorld") alloc] init : 5] ;
この行はおかしくない?
HelloWorldはjava.utilパッケージに入ってなよね。
予想だと[ java.util.HelloWorld >> HelloWorld ]じゃないかな?
試してみてよ。
281 Name: 278 [] Date: 03/02/14 20:53 ID: LnD46CMV Be:
HelloWorldにかえてみたんですがやっぱりうまくいきません。

#import <Cocoa/Cocoa.h>
#import <stdio.h>
#import <Foundation/Foundation.h>

int main(int argc, const char *argv[])
{
Class javaClass;
NSString* javaClassName;
id e ;
javaClassName = @"HelloWorld";
if (!(javaClass = NSClassFromString(javaClassName))) {
[NSException raise:NSGenericException format:@"Failed to load class'%@'", javaClassName]; }
e = [[javaClass alloc] init : 5] ;
printf("%d",[e hoge]) ;
return 0;
}

として実行すると
<NSGenericException> Failed to load class'HelloWorld'

HelloWorld はシグナル 5(SIGTRAP)により終了しました。
となり例外処理されてしまいます。
282 Name: 名称未設定 [sage] Date: 03/02/14 21:13 ID: selVPrLv Be:
使ったことないからよく知らんけど、Java Setup の関数を使うんじゃねーの?
283 Name: 280 [sage] Date: 03/02/14 22:50 ID: YLK143md Be:
協力してあげたいけど前述通りObj-Cは分からない…(ゴメソ
>>282が言う通りJava Setupってのがポイントじゃないかな?
ドキュメントをちょろっと読んでみたんだけど NSJavaClassesFromString てのが
あった。
役に立つかもしれないからJava Setupのドキュメントを読んでごらん。
わかったらやりかた公開してね。

ちなみにそれらしきドキュメントがある。Obj-C使いにとっては当たり前かもしれないが一応手助け代わりに場所だけ教えてあげる

/System/Library/Frameworks/Foundation.framework/Versions/C/Resources/English.lproj/Documentation/Reference/ObjC_classic/Functions/FoundationFunctions.html

ずいぶん奥深くにあるなぁ。
284 Name: 名称未設定 [] Date: 03/02/14 23:32 ID: OuEkm7oo Be:
日本語は無いのか?
285 Name: 名称未設定 [sage] Date: 03/02/15 00:05 ID: Ac1Y59ai Be:
ところでJavaBridgeって積極的に使って良いの?
TopicsのとこにはLegacyってなってるけど。

かわりにJNIを使うことになると思うんだけど。
どっかにJavaBridgeよりJNIを使えって書いてあったかな?
JNIのほうがめんどくさそうだが。
286 Name: 280 [sage] Date: 03/02/15 01:32 ID: 26ywk9jx Be:
>>284
分からない。
パッと見はなさそう。
あったら俺も見たい。
287 Name: 278 [sage] Date: 03/02/16 11:12 ID: diyOpGVW Be:
java bridge (obj-c -> java & java -> obj-c) のサンプルコードを発見しました。
tp://members.blackbox.net/a/programs/
のJava/ObjC-example for Cocoaにあります。
288 Name: 278 [sage] Date: 03/02/16 11:15 ID: diyOpGVW Be:
必要に応じてJavaReactor.javaの冒頭を変更してださい。
import com.apple.cocoa.foundation.*;
import com.apple.cocoa.application.*;
289 Name: 名称未設定 [sage] Date: 03/02/19 13:36 ID: AJv6KGuf Be:
守君参上
290 Name: 名称未設定 [sage] Date: 03/02/21 09:04 ID: 1xBXzSNJ Be:
こそ〜り保守中
291 Name: 名称未設定 [sage] Date: 03/02/22 00:14 ID: Sgmn5d2E Be:
堂々と保守!
292 Name: 名称未設定 [] Date: 03/02/22 14:01 ID: rZwK672+ Be:
あの・・10.2になってから(もしくはQT6になってからだったかも)NSMovieViewでのMPEG2再生がうまくいかないことないですか?

自作のアプリでNSMovieViewを使ってMpeg2再生してたら1分ほど再生した所で止まる(内部的には再生されているみたいだけど、音声も映像も止まる)ようになっちゃって、解決できません・・・。

ためしにWindowにMovieViewを貼っただけのテストアプリを作ったり、Cocoaはやっぱり!のサンプルアプリを見てみたりしたんですが、やっぱりこれも止まる。

解決できてるよ!という人がいたらご助言願いますー。
293 Name: 292 [] Date: 03/02/22 15:11 ID: rZwK672+ Be:
ああ、よく考えたらMPEG2再生できるようになったのはQT6からか。
としたら、止まるようになったのは10.2にしてからだなぁ、きっと。

今さっき、システムの再インストして確認したけどやっぱり止まりました。うちだけじゃないですよね?
294 Name: 名称未設定 [] Date: 03/02/22 17:02 ID: T31Zl/+7 Be:
>>292
確かに止まりますねえ。(Cocoaはやっぱり!のMoviePlay2で確認)
295 Name: 名称未設定 [sage] Date: 03/02/22 23:34 ID: Sgmn5d2E Be:
>>292
本当だ、、止まる。
なんでだろ?
296 Name: 292 [] Date: 03/02/22 23:39 ID: rZwK672+ Be:
QTPlayerで止まらないのは当然として、RBで作ったらしいカーボンアプリ
「MacMovieTV」
http://www.vector.co.jp/soft/mac/art/se197681.html
でも止まりませんでした。Cocoaだけの不具合なのかな・・。
297 Name: 名称未設定 [sage] Date: 03/02/23 11:07 ID: A2MIrTF6 Be:
>>292

ああ、10.2で止まるのって私だけじゃなかったんだ…。
うちではMP3を再生していても止まってしまいます。

私はしょうがないので「Cocoaはやっぱり! 出張版」を
参考にしてQuickTimeを直接呼び出して対処したんですが、
これだとモーダルダイアログの表示中に再生が一時停止して
しまうんですよね…。
298 Name: 名称未設定 [sage] Date: 03/02/24 22:02 ID: y8x3g38E Be:
細くとも長く生きてほしいから保守に一票
299 Name: 292 [] Date: 03/02/24 23:25 ID: cL6Sq5AD Be:
>>297
QuickTimeを直接呼び出すって言うのは、何をすれば良いんですか?
再生をstartするところだけQuickTimeを使えば良いのでしょうか。
300 Name: 297 [sage] Date: 03/02/25 01:57 ID: DyErNNd5 Be:
>再生をstartするところだけQuickTimeを使えば良いのでしょうか。
そういうことです。

実際のコードはこんな感じです。

#import <QuickTime/QuickTime.h>

NSMovie *movie;
Movie qtmovie;

EnterMovies();
movie = [ [ NSMovie alloc ] initWithURL:aURL byReference:YES ];
qtmovie = [ movie QTMovie ];
StartMovie(qtmovie);

301 Name: 292 [] Date: 03/02/25 22:49 ID: Ld3tJhfj Be:
うむむー、StartMovie()で再生開始してみたんですけど、やっぱし止まります・・。
別の問題があるのかなぁ?
302 Name: 297 [sage] Date: 03/02/26 20:57 ID: gQBzciJD Be:
>>301
あ、私は音さえ鳴れば良かったのでNSMovieViewには
MovieをセットせずにStartMovie()を実行してます。

なので、映像も表示させたい場合は他にも処理を
付け加える必要があると思います。
303 Name: 名称未設定 [] Date: 03/03/01 13:54 ID: kRnIXCQg Be:
このスレッド見て2週間前からcocoa勉強始めました
中村本List4-3で出てくる

NSSavePanel *savePanel = [ NSSavePanel savePanel ];

の意味するところですが、右辺(?)のNSSavePanelクラスに
クラスメソッド+savePanelを送った結果、戻り値の
インスタンスが左辺のNSSavePanelクラスのインスタンスである
savePanelとされる、という解釈するんですかね?
304 Name: 名称未設定 [sage] Date: 03/03/01 15:14 ID: s7FTtIdk Be:
>>303
たぶんそゆこと。
俺、ObjC知らないけど…。
あれ、アスタリスクがつくのってポインタなんだっけ(Cではそうだよね)?

ってか、Cocoa-Javaって制約大きいよなぁ。
勉強しようかなぁ。
時間ないなぁ。
独り言です…
305 Name: 名称未設定 [sage] Date: 03/03/02 00:52 ID: SBH9raFv Be:
>>303
NSSavaPanelについては良く知らんけど、
左辺のsavePanelはただの変数名。で、変数名の前のNSSavePanel *ってのは、
「この変数はNSSavePanelクラスのインスタンスを格納するための変数ですよ」という事を
『コンパイラに明示する』ために書いてあるものなんだ。だから、べつに:
  id savePanel = [ NSSavePanel savePanel ];
としても特に問題は無いよ。
/*正確には『NSSavaPanelのオブジェクトのポインタを格納するための変数だと明示する』事。*/
/*試しに"NSString *savePanel"としてみよう。コンパイラが文句言うと思う*/

という訳でNSSavePanel *savePanel = [ NSSavePanel savePanel ]; という行は、
「NSSavePanelクラスのインスタンスを格納する予定である変数savePanelを宣言し、
そこに [ NSSavePanel savePanel ] の結果(返り値)を代入して変数を初期化する」って意味になるよ。

結果として、変数savePanelにNSSavePanelのインスタンスが代入されるみたいだね。
306 Name: 名称未設定 [sage] Date: 03/03/02 01:07 ID: SBH9raFv Be:
>>304
Javaが解るならObjective-Cなんて楽勝でしょう。
ヒレガス本あたり買ってみては?
307 Name: 名称未設定 [sage] Date: 03/03/02 04:14 ID: AapsQ2b/ Be:
>>306
ん~、やってみようかな?
マックでソフト作るならこれからObj-Cが必須な気もするし。。
ちょっと今はWebアプリの勉強をしなくちゃいけないからその次かな?

とりあえずObj-cを読めるようにはならないとなぁ。
AppleのサンプルもほとんどObj-Cだし。

ちょっとしたら初めて見ますわ。
308 Name: 303 [sage] Date: 03/03/02 12:33 ID: sIDGxSpd Be:
>>305
あ、なるほど。「id savePanel =」と考えると見慣れた構文ですね
バッチシ理解できました。Thxです。

クラスからインスタンスの生成、というと
[ MyClass alloc ] init ];
と初期化とセットで考えてしまうのですが、
この場合[ NSSavePanel savePanel ]で生成された
インスタンス(右辺のsavePanel)は生成後自動的に初期化されているですか?

「cocoaはやっぱり」のキッチンタイマーでも
tmKitchen = [ NSTimer scheduledTimerWithTimeInterval: ...... ];
と alloc している部分は見当たらず・・・

ここもしかしてクラス固有の特性を理解していないのかもしれませんが
309 Name: 303 [sage] Date: 03/03/02 12:37 ID: sIDGxSpd Be:
ちと今頭の中混乱中なので妙な事書いてたら突っ込んでください(涙
310 Name: 名称未設定 [sage] Date: 03/03/02 13:17 ID: tVKgOb9U Be:
>>308

インスタンスを生成するクラスメソッドは原則として
初期化とAutoreleaseまでやってくれることになってます。

なので、
[ NSSavePanel savePanel ];
というのは
[ [ [ NSSavePanel alloc ] init ] autorelease ];
と読みかえることが出きます。
311 Name: 名称未設定 [] Date: 03/03/02 14:34 ID: YV6rGazc Be:
突然もうしわけないが・・・
前スレが985という半端な数字でおわっているのは?
312 Name: 名称未設定 [sage] Date: 03/03/02 16:38 ID: AapsQ2b/ Be:
>>311
気付いたら落ちちゃったんですよ( ´Д⊂
313 Name: 311 [sage] Date: 03/03/02 22:15 ID: YV6rGazc Be:
>>312
ご説明ありがとう。私超厨房で、dat落ちとか知らなかった。

とてもいいスレです。いま前スレを読んでまして、参加できる
日を楽しみにしてます。
314 Name: 名称未設定 [sage] Date: 03/03/02 23:20 ID: AapsQ2b/ Be:
>>313
既に参加してるじゃないですか?
とてものんびり進行してるのでたまに顔出して下さいな。
315 Name: 303 [sage] Date: 03/03/02 23:22 ID: sIDGxSpd Be:
>>310
おお、先の件と2点分かっただけで目の前で霞んでいたものが
晴れてきた気分。多謝、多謝です。
316 Name: 名称未設定 [sage] Date: 03/03/03 02:22 ID: qwTwrPB/ Be:
>>308

同じインスタンスを使い回してたりとか。

>tmKitchen = [ NSTimer scheduledTimerWithTimeInterval: ...... ];

この場合はちょっとちがうかな。
NSTimerはNSRunLoopに登録しないと機能しないんです。
で、上のメソッドを呼ぶとインスタンスを生成させた後、カレントランループに
そのインスタンスを登録して、それを返してくれる。
単純なビルダーパターンみたいなもんですね。
317 Name: xxx [age] Date: 03/03/05 01:05 ID: n4eQ24cL Be:
>インスタンスを生成するクラスメソッドは原則として
>初期化とAutoreleaseまでやってくれることになってます。

というパターンもあれば、ずっと常駐する、あるいは解放する必要がない
ものを返す場合もあります。(たとえば[NSColor redColor]とか)
318 Name: 守護霊 [sage] Date: 03/03/06 00:27 ID: zZEaj4Vp Be:
あ、こんにちは守護霊です。
今日は保守に参りますた。
319 Name:   [] Date: 03/03/06 02:07 ID: do/ax8Tj Be:
>>317

その辺はsingletonパターンを使っているのでAutoreleaseしているか
常駐しているか意識しなくてもいいようになっているんだろうね
320 Name: 名称未設定 [] Date: 03/03/08 02:50 ID: nolDcyCk Be:
みんな職業なにさー。プログラマ?
321 Name: 名称未設定 [] Date: 03/03/08 02:55 ID: 1RkPkO0x Be:
大工
322 Name: 名称未設定 [sage] Date: 03/03/08 04:15 ID: 4NgTRL// Be:
学生…、そろそろクビだけどね…。
323 Name: 320 [sage] Date: 03/03/09 01:29 ID: +PqwrKw6 Be:
>>321
マジっすか。凄い家を建てそうですね。

>>322
クビってw。勉強しろよw。
324 Name: 名称未設定 [] Date: 03/03/09 17:08 ID: msa+sHAS Be:
初歩的なことだと思うんですが、さっぱりわからないのでおまいら誰か教えてください。
htmlソースからリンクを抜き出そうとした時、
例えば <a HREF="xxx.html"> の部分を探して xxx.html の部分を抜き出したい時、
<a HREF=" や "> を検索しようとすると、@"<a HREF=""、@"">" となってしまってうまくいきませぬ。
" を含む文字列を記述するにはどうしたらいいのでしょうか?
325 Name: 名称未設定 [sage] Date: 03/03/09 18:12 ID: 6mXvgXjh Be:
?バックスラッシュ+"でできると思う。
326 Name: 名称未設定 [sage] Date: 03/03/09 22:04 ID: msa+sHAS Be:
>>325
激しく感謝!!
やっと先に進めます。ありがとう!
327 Name: 名称未設定 [sage] Date: 03/03/10 23:29 ID: mRFFOi61 Be:
NSOutlineView で、Safari のブックマークみたいに Column に
色をつけたいのだが、どうしたら良いのでしょう?
やはり NSTableView を継承するのが良いのでしょうか?
328 Name: 名称未設定 [sage] Date: 03/03/10 23:41 ID: 658LH3T0 Be:
"Safari のブックマークみたいに Column に色をつけたい"というのが良く分からないが、
NSOutlineViewの
- (void)outlineView:(NSOutlineView *)outlineView willDisplayCell:(id)cell forTableColumn:(NSTableColumn *)tableColumn item:(id)item;
あたりがヒントになるかもしれない。
329 Name: 名称未設定 [sage] Date: 03/03/11 00:57 ID: 9t0TPS4H Be:
IrDAを使いたいんですが資料のあるところ知りませんか?
330 Name: 329 [sage] Date: 03/03/12 01:53 ID: U+AUWkbk Be:
それらしい情報を見つけたんですけど、ちとよくわからんです。
/dev/cu.IrDA-IrCOMMch-b を読んだり書いたりすればいいのかな?

http://www.omnigroup.com/mailman/archive/macosx-dev/2001-November/020999.html
331 Name: 保守 [sage] Date: 03/03/15 07:58 ID: 4pQJTuAp Be:
ていうかOSXでIrDAてつかえるんか?
332 Name: 名称未設定 [sage] Date: 03/03/16 17:36 ID: g/2cX/Mn Be:
Object-Cでフォルダを作るのってどうしたらいいのですか。
NSFileManagerあたりがクサイと探していますがさっぱり見つかりません。
333 Name: 名称未設定 [sage] Date: 03/03/16 17:47 ID: sxlGCdlS Be:
http://developer.apple.com/techpubs/macosx/Cocoa/Reference/Foundation/ObjC_classic/Classes/NSFileManager.html#CHDBAFJD
334 Name: 名称未設定 [sage] Date: 03/03/16 19:59 ID: g/2cX/Mn Be:
いや、ごめんなさい。NSFileManagerそのものを探してるわけではなくて。
フォルダの作り方がさっぱり。
335 Name: 名称未設定 [sage] Date: 03/03/16 20:12 ID: 4OraDKFV Be:
>>334
>>333見れ
336 Name: 名称未設定 [sage] Date: 03/03/16 22:24 ID: g/2cX/Mn Be:
あ、createDirectoryAtPathか。サンクスサンクス。読み逃してた。
http://www.oomori.com/cocoafw/Foundation/NSFileManager/createDirectoryAtPath.html
337 Name: 名称未設定 [] Date: 03/03/17 11:34 ID: vwFLfm0V Be:
あのー、intをNSStringに変換するのってどうすればいいんでしょう?
思いっきり初心者質問で申し訳ナイス
338 Name: 名称未設定 [sage] Date: 03/03/17 11:49 ID: rNrgj0l9 Be:
>>337
[[NSNumber numberWithInt:int]stringValue]
339 Name: 名称未設定 [sage] Date: 03/03/17 12:01 ID: vwFLfm0V Be:
>>338
即レスありがとう!
340 Name: 名称未設定 [sage] Date: 03/03/19 05:20 ID: VPA/u3fR Be:
隠れ保守神
341 Name: 名称未設定 [sage] Date: 03/03/21 17:51 ID: YVSn6hCY Be:
Object-Cなんですが、
ある作業がちゃんと完了するのを待ってから先へ進ませる、ということはできますか?
たとえば何かの動作中に、作業状況をTextFieldに逐一表示したい場合とか...
342 Name: 名称未設定 [sage] Date: 03/03/23 01:45 ID: OSxgBhrr Be:
保守
343 Name: 名称未設定 [sage] Date: 03/03/23 11:48 ID: zlrwIDrS Be:
すみません、つい最近Cocoaプログラミングに手を出したんですが
FileMergerの使い方がよく分かりません。

◆やったこと
・クラスを作成していくつかアウトレットやアクションを作成
・生成したソースファイルにコードを書いてコンパイル
・その後クラスにアウトレットを追加したのでもう一度関連ファイルを生成
・ここでFileMergerが立ち上がるけどよく分からないのでセーブして終了
・ソースがまっちろに!うわーん

クラスを変更した結果増えた行に関しては(ヘッダファイル)、
問題なく追加されているんですが、新しいほうのファイルにない
行があるファイルは全部消えて置き換わってるんです。
正しいマージの仕方を教えてください。
344 Name: 名称未設定 [sage] Date: 03/03/23 12:20 ID: 4EplBd0u Be:
>>343
・その後クラスにアウトレットを追加したのでもう一度関連ファイルを生成
・ここでFileMergerが立ち上がるけどよく分からないのでセーブして終了

ここが問題。
一旦生成した Hoge というクラスに Outlet や Action を追加するには、
クラスの Hoge.h と Hoge.m ファイルに IBOutlet や IBAction のコードを書くだけでOK。
そして、その Outlet や Action とコントロール部品を接続するには、
Hoge.h ファイルを Interface Builder の
Classes > Read Hoge.h メニューで読み込んでから接続する。
345 Name: 名称未設定 [age] Date: 03/03/23 14:15 ID: jwdEcO0V Be:
要はインターフェースビルダーから書き出し(クリエイト)すると
まっさらなひな形がプロジェクトビルダーで上書きされるんです
だから今まで書いたコードがまっさらに。

だから逆にプロジェクトビルダーのほうでアウトレット等書き込んでやって
それをインターフェースビルダーに読み込ませてコントロール等と
結線する、と。

どんなコードを追加したらいいかは最初にクリエイトしたひな形で
だいたい想像つくでしょ?
346 Name: 名称未設定 [sage] Date: 03/03/23 20:52 ID: UR167USc Be:
OS.Xになったことに伴ってCocoaに触りはじめています。

Toolbox の GetKeys のように、キー入力の状態を取得したいのですが、
他にフレームワークを追加するみたいで、行き詰まっています。

どなたかご存じの方がいらっしゃいましたら、ぜひ教えて下さい。
347 Name: 346 [sage] Date: 03/03/23 21:00 ID: UR167USc Be:
あぁ、すいません。書き込んだ後すぐにCarbon.frameworkが見つかりました。
348 Name: 名称未設定 [sage] Date: 03/03/23 23:14 ID: zlrwIDrS Be:
>>344,345
助かりました! それが正しい(?)方法なんですね。

ところでもう一つ凄く初歩的な質問があるんですが…
"nil"ってなんですか? NULLのこと?
Cocoaはやっぱりのwebの例に

NSTimer *tmKitchen= nil;

ってありますけど、意味も分からずにそのまま書いてます。
349 Name: 名称未設定 [] Date: 03/03/23 23:37 ID: fNMMXLs6 Be:
>>348
http://www.google.co.jp/search?hl=ja&inlang=ja&ie=Shift_JIS&q=%22nil%22+c%8C%BE%8C%EA&btnG=Google+%8C%9F%8D%F5&lr=lang_ja
350 Name: 名称未設定 [sage] Date: 03/03/24 13:33 ID: n86SSaMT Be:
しばらく見ない間にずいぶん初心者にやさしいスレになったな。
351 Name: 名称未設定 [sage] Date: 03/03/24 18:09 ID: Tl6Q9zvZ Be:
もともとさっぱりな人たちが助け合うスレだから。
352 Name: 名称未設定 [sage] Date: 03/03/24 21:00 ID: EQLEFjNY Be:
初心者排除したらこのスレはすぐに落ちちゃいます。
353 Name: 名称未設定 [sage] Date: 03/03/28 11:12 ID: GvA0+xOO Be:
スレッドについてわかりやすく解説してるところはないですか?
NSThreadは読みましたが、実際どういうものなのかがわかりませぬ。
354 Name: 名称未設定 [sage] Date: 03/03/28 12:23 ID: nijosm6z Be:
javaのスレッド解説サイトとかで感じをつかむとか...
355 Name: 名称未設定 [sage] Date: 03/03/28 16:28 ID: M9lTTgB2 Be:
自分は荻原 剛志氏の著書で理解できました。<NSThread
356 Name: 名称未設定 [sage] Date: 03/03/28 17:34 ID: 4B5F/J3B Be:
もしかして、javaでDeterminateなNSProgressIndicator
は動かないのだろうか...
357 Name: 353 [sage] Date: 03/03/28 21:45 ID: GvA0+xOO Be:
>>354-355
サンクスコ。あちきは中村本の弟子なもんで...
プログラムがはじめてでもわかりやすい本だったけど、
やっぱりその分踏み込みは浅めですね。
荻原本とかもう一冊買おうかなあ(それとも立ち読みか)
358 Name: 名称未設定 [sage] Date: 03/03/28 22:19 ID: SPgj6TFf Be:
>>357
技術書の立ち読みは個人的には好かんな。
まぁ、知りたいことがすでに絞り込んであるなら立ち読みもありだけど
できるだけ全体を通して理解した方が力にはなるよな。
本はいくら読んでも損はしないぞ。
特に入門本を買った時は間違いなく踏み込んだ本が必要。

説教じみてきたな。。。
スレッドに関しては>>354氏が言うようにjava系の解説を読むと
理解しやすいかも?
ガンバレ
359 Name: 353 [sage] Date: 03/03/28 23:24 ID: GvA0+xOO Be:
>>358
いやあ、何かと春は物入りなもんで高い本にはなかなか手が出ないザンスよ。
Cocoaから始めたので未だにJAVAは機械語にしか見えないし...
とりあえずいろいろ実際動かして試してみよかな。
360 Name: 名称未設定 [sage] Date: 03/03/28 23:27 ID: A+eq+s3h Be:
そう?
Javaも独自の部分を除けばCに似てると思うけど。
361 Name: 358 [sage] Date: 03/03/29 11:53 ID: EALTZVpH Be:
>>359
>いやあ、何かと春は物入りなもんで高い本にはなかなか手が出ないザンスよ。
うんうん、わかるよ。

スレッドに関しては言語に依存しない解説も結構あるから探してみるといいかも。
362 Name: 名称未設定 [] Date: 03/03/29 16:02 ID: +jtwqOS3 Be:
年度末ってソフトのバージョンアップとかがガーッと来ますよね。

スキャナとプリンタ欲しいけどもう金ねえ。

>>360
>>353が現状で何を勉強しているかわからないけど、Cocoaからプログラミングの勉強をはじめたので
どの言語もわけわからんものに見えるのだと思われ。
363 Name: 名称未設定 [] Date: 03/04/03 11:04 ID: YumVfF0c Be:
保持しておきたいデータオブジェクトlogData、
その後に追加するnewDataがあるとして

@interface MyController
NSData *logData;


@implementation MyController

- (void)appendLog: (NSData *)newData
{
if (logData)
{
NSMutableData *tempData;
[tempData mutableCopy:logData];
[tempData appendData: newData];
logData = [tempData copy]; //.........(1)
} else {
logData = newData;//..................(2)
}
}

(1)と(2)の部分でその前に
[logData autorelease];
しておかないとメモリリークしますか?

それと(2)は
logData = [newData copy];
としておかないとlogDataの値って保持されないですかね?
364 Name: 363 [sage] Date: 03/04/03 11:22 ID: YumVfF0c Be:
あら、でも自分でallocしているわけじゃないのでreleaseする必要は
ないのかな....?
(1)と(2)、それぞれ前と後じゃ同じlogDataでも別物ですよね?
このメソッド繰り返すとワサワサメモリ使っていっちゃうんでしょうか?
365 Name: 名称未設定 [] Date: 03/04/03 12:31 ID: 7ox0ucKs Be:
>>363

logDataが有効なオブジェクトである場合:
 まず[tempData mutableCopy:logData];はtempData = [logData mutableCopy];だと思うんだが。
 mutableCopyとかcopyはautoreleaseされてないはず。よってtempData変数が破棄される前に参照するオブジェクトを解放するか、保持(ownerを設定)しなければならない。
 次のlogData = [tempData copy];では今まで指していたlogDataをtempDataのコピーに変更するので、元のオブジェクトがリークする。よって(1)のまえにlogDataをreleaseかautoreleaseする。
 あとtempDataはすでに元のlogDataとは別のオブジェクトなのでわざわざcopyするのは無駄だと思うが。

logDataがnilだった場合:
 if (logData)により、(2)が実行される。
 メソッド実行後、newDataのオブジェクトをlogDataが指すが、newDataが他でreleaseされたらlogDataの指すオブジェクトは無効になるのでretainが必要。

変数とオブジェクトのインスタンスを分けて考えることと、
オブジェクトオーナーシップを理解することなどが必要かと。
366 Name: 363 [sage] Date: 03/04/03 16:27 ID: YumVfF0c Be:
速レスありがとうございます
仰る通り今オブジェクトオーナーシップの項でつまづいてまして。
レス見ながら3時間考えてしまいますた

>まず[tempData mutableCopy:logData];は
>tempData = [logData mutableCopy];だと思うんだが

すません、単純にミステイクです。

>mutableCopyとかcopyはautoreleaseされてないはず。よってtempData変数が破棄される
>前に参照するオブジェクトを解放するか、保持(ownerを設定)しなければならない

この部分がちょとわからないす...でも調べているうちに別の疑問も解決したりしてちと前進。
もう少し考えてみます。

あとリークの話ですが、例えば
NSString* str = @"abc";
str = [ str stringByAppendingString : @"def"];
この場合は最初の文字列定数に対するstrといった場合は
相手が定数、ってことでリリースする必要はないですか?


>あとtempDataはすでに元のlogDataとは別のオブジェクトなので
>わざわざcopyするのは無駄だと思うが。

tempDataを得た時点で処理が終わらず、次々得られたnewDataを末尾に結合し
常にlogData変数に溜め込んで最後に「連続したデータとして」吐き出す、という考えです。
367 Name: 名称未設定 [sage] Date: 03/04/03 16:43 ID: FkUa8EXL Be:
本家 Cocoaはやっぱり が404...
本買って読めって事?
368 Name: 名称未設定 [sage] Date: 03/04/03 16:59 ID: A1JseunR Be:
site-aroも調整中?みたいだけど。
http://www.big.or.jp/~crane/
369 Name: 365 [] Date: 03/04/03 18:38 ID: 7ox0ucKs Be:
>>366
オーナーシップの話題はさんざん既出なので資料はたくさんあると思う。

>NSString* str = @"abc";
>str = [ str stringByAppendingString : @"def"];
strは定数なのでリリースしない。

リリースする必要がある(=インスタンスのオーナーである)のは基本的にalloc,copyした場合とか、retainした場合。

>tempDataを得た時点で処理が終わらず、次々得られたnewDataを末尾に結合し
>常にlogData変数に溜め込んで最後に「連続したデータとして」吐き出す、という考えです。
よくわかないっす。並列に実行するの?
っつーかlogDataをNSMutableDataにして、
-(id)init {
[super init];
logData = [[NSMutableData alloc] init];
return self;
}
- (void)appendLog:(NSData *)newData {
[logData appendData:newData];
}
とかでいいんじゃないかな?

370 Name: 363 [sage] Date: 03/04/03 21:36 ID: GdSqss15 Be:
>>369
>リリースする必要がある(=インスタンスのオーナーである)のは
>基本的にalloc,copyした場合とか、retainした場合。

allocやretainと憶えていたのでこれまた前進です。
なんか断片的にジグソーバズルが埋まっていくような。

>よくわかないっす。並列に実行するの?
あ、今回はアルゴリズム的な話ではなく、Cocoaの作法として
考えて下さって結構でし。

ども、ありがとうございました。
371 Name: 名称未設定 [] Date: 03/04/04 01:07 ID: 3GIJbdVL Be:
ちょっと分かりにくい質問なんですけど、例えばDockの大きさは
システム環境設定のDockの設定のところで動的にリアルタイムで変化させれますよね?
あれってどうやってるんでしょうか?
Apple Eventでもなさそうだし、ああいう風に他のアプリを自分のアプリから
コントロールする場合、どういう手法を採るんでしょうか?
372 Name: 名称未設定 [] Date: 03/04/04 01:22 ID: /+WnuhbR Be:
米Appleは、12月1日(現地時間)に現在のSwitchキャンペーンの後続と
なる「Real Switch」キャンペーンを開始した。「Switch」キャンペーンとは、
他OSからMacintoshへの変更を促すもの。転向したユーザーを「Switcher」
と呼ぶが、どうも、「偽Switcher」が多く含まれていた模様。このため、
Appleは、Switcherの中から本当のSuitcherを見つけるキャンペーンに
切り替えたようだ。

ttp://pc.watch.impress.co.jp/docs/2003/0401/uocchi/rs.htm
373 Name: 名称未設定 [sage] Date: 03/04/04 13:41 ID: MjmTJW8j Be:
PithってSafariと完璧に連動してるけど、あれってどうやってるんだろ。
どこの何を読んでるの?
374 Name: 名称未設定 [sage] Date: 03/04/04 14:28 ID: ZfGtqqRT Be:
AppleScriptでアイドルハンドラで数秒ごとにウインドウ監視してればできそう。
375 Name: 名称未設定 [] Date: 03/04/05 12:00 ID: R0KODGis Be:
この気違いドザにCocoaを見せつけてやりたい
http://www.geocities.co.jp/Milkyway-Lynx/4133/article/art_7.html
376 Name: 名称未設定 [sage] Date: 03/04/05 12:11 ID: ZucYqqEz Be:
>>375
いきなり
> 世界で最も美しいGUI、"Motif"
とは驚きだ。
…つーかそいつ、犬糞erじゃないの?
377 Name: 名称未設定 [sage] Date: 03/04/05 12:19 ID: Wq2mRxT5 Be:
>行数にして僅かに66行(空行含む)。
>Windowsで同じ事をすると倍近くのコードを書かねばなりません。
>MacintoshでCarbonやToolBoxを使った日にはさらに倍以上のコードを書くハメになります。
ナニモ シラナイノニ エラソウナコトイウナ!
378 Name: 名称未設定 [sage] Date: 03/04/05 12:32 ID: y7qF7tfY Be:
Cocoaだったら20行でいけるわな。
379 Name: 名称未設定 [sage] Date: 03/04/05 12:47 ID: Wq2mRxT5 Be:
いや、あれだけならInterface builderで(ry
というか行数どうのこうのより、CocoaのCの字も知らないのに
バカにしているのが許せん。
380 Name: 名称未設定 [sage] Date: 03/04/05 16:15 ID: phxq/2S9 Be:
>>375
Mac批判してるだけでドザって思い込むのはやめたほうがいいぞ。
どう見てもドザじゃないし・・・。
OSXも使っててそれでもMotifがいいって言ってるんだから
価値観の合わない人とは関わらないのが吉。
381 Name: 名称未設定 [sage] Date: 03/04/05 16:51 ID: 7ul0KRc8 Be:
ま、知らない方が彼にとっては幸せだよ。
微笑しながら見守ってあげましょう。
382 Name: 名称未設定 [sage] Date: 03/04/05 21:42 ID: DU7TfmNg Be:
て、いうか、例としてあげているCのコード、ダサ過ぎ。
BeOSのアプリケーションのソースを見せてやりたい。(←をいっ!
383 Name: 名称未設定 [] Date: 03/04/05 22:54 ID: asYB7vUe Be:
Cocoaはやっぱり
ttp://www.big.or.jp/~crane/cocoa/
落ちてますか?404 Not Found なんだけど…
384 Name: 名称未設定 [] Date: 03/04/05 23:13 ID: mrX8GlKK Be:
マッカーに過ぎたる物は余りないが、敢えて言うなら
Interface Builderだな。これはいい。
385 Name: 名称未設定 [sage] Date: 03/04/06 01:26 ID: J03Qt8Is Be:
>>375
ワラタ
かなり電波入ってるなぁw
でも、彼の頁のファイルダイアログ批評には激しく同意。
386 Name: 名称未設定 [] Date: 03/04/06 02:33 ID: cbA9GWNr Be:
しかし、 Interface Builderみたいなものって、CUIの世界からGUIの世界に移ったとき、
開発環境としていちばんはじめに用意されるべき物だったような気がするんだが。
387 Name: 名称未設定 [sage] Date: 03/04/06 02:38 ID: r+CG+vF0 Be:
>>385
電波にしてはまだまだ弱い気がするけど、ただ若いだけというか。
ていうかファイルダイアログってリサイズできたのか。
388 Name: 名称未設定 [] Date: 03/04/06 02:51 ID: cbA9GWNr Be:
>>385 
電波っていうか、たんに自分の好きなものをマンセーしてるだけだな・・・
モーオタのファンサイトと同レベルかな。

cocoaの保存ダイアログのカラム表示は好きだけどなあ、
でもイマイチ整頓しきれていない感はあるな
389 Name: 名称未設定 [sage] Date: 03/04/06 02:56 ID: 9uHmEORt Be:
最近使った項目とかを全部一つのプルダウンに押し込んだのはどうだろう?
それと、上の階層のフォルダに上がりにくくなった。

スレ違いだけど。
390 Name: 名称未設定 [] Date: 03/04/06 03:05 ID: cbA9GWNr Be:
プルダウンは、ブラウザのブックマークを意識してるのかも。
ブラウザのブックマークは一つのプルダウンの中に入ってるからね。
慣れてないと、わかりにくい。

上の階層に上がるのは、カラム表示なら下のハンドルを掴んでうごかすだけのような。
391 Name: 名称未設定 [sage] Date: 03/04/06 03:05 ID: 3o4jut1o Be:
いつになく盛り上がってますな。
392 Name: 名称未設定 [sage] Date: 03/04/06 10:55 ID: o0PnofWA Be:
Cocoaから大分離れてきたが……

たしかにOS.9からXに移行した時
一番使いにくかったのがファイルダイアログかな。(iBookだったし)
最近はPowerBook買って1280*854までスクリーンが広くなったから
そんなに苦じゃなくなったけど。
393 Name: ほんとにさっぱりしてる [age] Date: 03/04/06 19:30 ID: 3EwRybz3 Be:
>>383
ttp://www.big.or.jp/~crane/
によると、しばらくblogします、だってさ。
394 Name: 名称未設定 [sage] Date: 03/04/06 22:33 ID: Lw1E0CGA Be:
IEじゃないと見れないな。
395 Name: 名称未設定 [sage] Date: 03/04/07 00:46 ID: wFMoad4B Be:
インラインフレーム使ってる
396 Name: 名称未設定 [sage] Date: 03/04/07 07:59 ID: I+qXa1L8 Be:
>>394
気付かずCaminoでみて何もないのかと思った。
397 Name: 名称未設定 [] Date: 03/04/07 13:42 ID: 619o4sfV Be:
Cocoaなひとなのに、SafariやCaminoで見られないサイトを作るのは何かの嫌がらせ?
398 Name: 名称未設定 [sage] Date: 03/04/07 13:55 ID: zzVqvOEm Be:
tp://ch.kitaguni.tv/u/120/
あんま Cocoa と Blog は関係無さげ。
MovableType 流行ってるね。tDiary とかWiki も。
399 Name: 名称未設定 [sage] Date: 03/04/08 13:14 ID: YFjcPzEw Be:
Blogがじゃなくて、デベロッパな人がIE以外で自分のページを確認してないってのはどうなのよと。
400 Name: 名称未設定 [sage] Date: 03/04/08 14:02 ID: 8wTCAmOB Be:
>>399
Webデザイナーだったら激しく問い詰めてやるところだが
デベロッパだったら別にかまわないんじゃないの?
といいつつ400ゲット
401 Name: 名称未設定 [] Date: 03/04/08 14:23 ID: CSfncauk Be:
別にWindowsのデベロッパだったらわからなくもないが、Cocoaの書籍を書いているのにSafariやCaminoで読めないサイトを作るのは不思議だなぁーと。
なんか嫌な事でも有ったのか?
402 Name: 名称未設定 [sage] Date: 03/04/08 19:09 ID: D2j+hYgM Be:
Safariは未完成かつバグ持ちだから、
Safariに合わせて作るわけにもいかんでしょ。
403 Name: 名称未設定 [] Date: 03/04/08 21:29 ID: CSfncauk Be:
いや。Safariにあわせてじゃなくて、IEだろうがNetscapeだろうがOperaだろうがw3mだろうがって意味。
SafariとCaminoだと、blogの存在すらわかんないじゃん。
404 Name: 名称未設定 [sage] Date: 03/04/08 21:44 ID: D2j+hYgM Be:
だからそんなこと知らんってばよ。
ちゃんとHTMLにさえ準拠してないブラウザが悪い。
405 Name: 名称未設定 [sage] Date: 03/04/08 22:05 ID: NcOqdo2x Be:
>>404
君はstrictじゃないね。
406 Name: 名称未設定 [sage] Date: 03/04/08 22:10 ID: B+W1wavS Be:
ソースを見たところ、HTMLの方が不完全だったけど…
実験段階のblogらしいし、あんまり拘ってないのかな。
たぶんiframeのurl属性を""でくくってないから、
一部のブラウザで表示されないんじゃないんかなぁ?
407 Name: 406 [sage] Date: 03/04/08 22:16 ID: B+W1wavS Be:
と思ったけど、表示されない原因はまた違うみたい。
なんで表示されないんだろう。
408 Name: 名称未設定 [sage] Date: 03/04/08 22:18 ID: NcOqdo2x Be:
表示されない理由
ttp://openlab.ring.gr.jp/k16/htmllint/htmllint.cgi?ViewSource=on;URL=http://www.big.or.jp/~crane/close.html
409 Name: 406 [sage] Date: 03/04/08 22:30 ID: B+W1wavS Be:
tableの中のiframeの高さ(height=95%)が極端に小さいものと認識されているようだ。
410 Name: 名称未設定 [] Date: 03/04/08 22:39 ID: CSfncauk Be:
「作者がSafariでテストしていない」が論点です。それもCocoaのプログラム識者なのに。という意味。
411 Name: 名称未設定 [] Date: 03/04/08 22:41 ID: CSfncauk Be:
>>409
さあD2j+hYgMさん。その箇所なおして再アップロードしといてください。
412 Name: 名称未設定 [sage] Date: 03/04/09 02:49 ID: 0CLAVZ0m Be:
PBで\nとしても改行されないのは
なんとかならないんでしょうか。
バックスラッシュいちいちコピペしてるんですが。
413 Name: 名称未設定 [sage] Date: 03/04/09 05:21 ID: ZFgISmAt Be:
プログラミング自体初めてな俺、
いままさに
414 Name: 名称未設定 [sage] Date: 03/04/09 08:20 ID: KUJbjg3U Be:
>412
スクリプトを米国にして、Option+\でバックスラッシュが入力できます。
415 Name: 名称未設定 [sage] Date: 03/04/09 11:25 ID: u/OaGNRB Be:
>>414
できました。
ありがとうございました。
416 Name: 名称不確定 [age] Date: 03/04/09 16:05 ID: ZwuYuJnV Be:
よくわからんけど
CocoaとSafariとどう関係するんだ?
CocoaフレームワークにSafariに関するクラスとかメソッドでもあるの?
417 Name: 名称未設定 [] Date: 03/04/09 16:38 ID: YJvsqjsE Be:
Interface Builderで作成したアプリケーションの
パッケージ内のファイル、特に画像ファイルを見れなく
する方法てないですか?
ゲームなんかだと簡単に見られたく無い画像とかあるので。
418 Name: 名称未設定 [sage] Date: 03/04/09 16:47 ID: 6mlIhf9s Be:
>>416
CocoaフレームワークとSafariは直接関係ないだろう
一部ではWebKitフレームワークがアツいようだが

>>417
独自フォーマットに汁
PNGでプライベートチャンク使うとか
ビットマップをシーザー暗号でエンコードするとか
419 Name: 名称未設定 [sage] Date: 03/04/11 16:54 ID: aOO376W1 Be:
TableViewのデータソースで悩んでます。
中村本だとデータソースにはNSMutableArrayを使うんですが、
NSCellを使ったりする方法もあるようで、
テーブルの項目の中に画像を使おうとするとそのほうがいいのかなあ。
なんだか根本的なことがわかってないような気もしますが、どなたかアドバイスキボンヌ!
420 Name: 名称未設定 [sage] Date: 03/04/11 20:11 ID: ks8ALL2s Be:
>>419
要はアイコン付きリストを表示させたいのか?
NSTableViewじゃなくてNSOutlineViewの場合だけど……
俺はNSBrowserCellを使った
NSCellを継承してオリジナルのクラスを実装した場合に比べて
何もしないでもAQUAのアピアランスに沿ってくれるので楽
NSOutlineViewのExampleを改造したので
データそのものはNSObjectを継承したFileSystemItemクラスに持たせた
それとデータを保持するクラスとデータソースは別だぞ
421 Name: 名称未設定 [sage] Date: 03/04/11 23:02 ID: aOO376W1 Be:
うーん、よくわからないのはテーブルのひとつひとつのセルの中には何を表示できるのか?ってことナンス。
普通だとNSStringやらNSNumberやらでつが、ここにNSCellを返せばいいのか、
はたまたNSImageを直接ぶちこんでもいいのだろうか、とか。

>それとデータを保持するクラスとデータソースは別だぞ
あっ、そうですた。
422 Name: 名称未設定 [sage] Date: 03/04/11 23:05 ID: p0pqNUxk Be:
分からなければ実際にコードを書いて実験したみたらどうだろうか?
その方が理解も進むぞ。
423 Name: 名称未設定 [sage] Date: 03/04/12 00:01 ID: nlJewAEd Be:
NSImageは既に失敗しますた。NSCellはどうにもうまくいかず。
424 Name: 420 [sage] Date: 03/04/12 02:30 ID: Wq3c32eI Be:
>>421
データソースの-tableView:objectValueForTableColumn:row:で
返すオブジェクトはそのセルに表示する文字列(すなわちNSString)
NSCellはNSTableColumnに対してアプリ起動時にsetDataCellしてやる
NSTavleViewを継承してawakeFromNibをオーバーライドしてもいいし
デリゲートでアプリ起動を受け取ってアウトレットを使ってもいい
データセルは上記データソースメソッドの中で
cell = [tableColumn dataCell]; するとインスタンスへの参照を取り出せるので
そいつにsetImageしてやる(どこにも返す必要はない)
つまりテキストとイメージは渡す先が別だということ
NSCellは継承して改造しないとうまくいかないんじゃないかな
でもNSBrowserCellを使う方が簡単だと思う
ちなみにアイコン「だけ」表示させればいいという時は
NSTextAttachmentCellだけのNSAttributeStringを返してやればいい
言葉で説明してもよくわからないと思うので
NSOutlineViewでアイコン付きリストを表示させるソースをウプしようか?
NSTableView用に書き直すのは簡単だと思う
NSImageやNSCellで失敗してハマっちゃってるみたいだし(w
425 Name: 名称未設定 [sage] Date: 03/04/12 09:36 ID: nlJewAEd Be:
アイコン付きリストを表示、ってこんな感じのソースですか?いじってみたけどよくわからず...
http://homepage.mac.com/mkino2/cocoaProg/AppKit/NSCell/NSCell.html#iconedCell
目指しているのはMailのリストのような、アイコンで項目の状況を表示する(未開封アイコンとか)ものなんす。
わからないのは最初にカラムにsetDataCellしてしまって、そのあと「何番目の項目にこのアイコンを」とかってことはどうやってやるんだろう、と。
426 Name: 名称未設定 [sage] Date: 03/04/12 10:51 ID: HC66oXv/ Be:
>>425
その例はアイコンとテキストを同じ cell に表示させるためのもの。
アイコンのみ表示させたい場合は、もっと簡単。

NSTableView の delegate に
-(void)tableView:(NSTableView *)tableView willDisplayCell:(id)cell forTableColumn:(NSTableColumn *)tableColumn row:(int)row;
を実装して、引数として渡される cell の-(void)setImage:(NSImage *)image; を呼んで、
その引数として row に応じたNSImage クラスのオブジェクトを渡すだけでOKだと思う。

NSTableColumn の -(void)setDataCell:(NSCell *)cell; は、
その列の dataCell の型を指定するためのものにすぎない。
427 Name: 名称未設定 [sage] Date: 03/04/12 11:05 ID: nlJewAEd Be:
>>426
おお、なんとなく理解できる!w
とりあえず試してみます(・∀・)
428 Name: 420 [sage] Date: 03/04/12 11:36 ID: Wq3c32eI Be:
どうもちゃんとsetDataCellしとかないと
-tableView:WillDisplayCell:forTableColumn:rowで
cellにsetImageする時にエラーで落ちるような???
つーわけでNSTextAttachmentCell使って30分でデッチ上げてみますた

http://ruffnex.oc.to/ipusiron/upload/6758.lzh

要はこういうことがやりたいの?

#画像はCocoMonarからの流用...
429 Name: 名称未設定 [sage] Date: 03/04/12 11:50 ID: nlJewAEd Be:
>>428
そう!そうなんでつ!まさにこれ!
しばらくこのコードを研究します!サンクスコ!
430 Name: 名称未設定 [sage] Date: 03/04/12 12:03 ID: HC66oXv/ Be:
>>427
ごめん。
実際に試してみたら426では動かなかった。
NSCell に -(void)setImage:(NSImage *)image; があるので直に通るかと思ったら、
やはり setDataCell をしないとダメらしい。
http://www.geocities.co.jp/SiliconValley-Bay/5171/tableviewsample.dmg.gz
とりあえず単純すぎるサンプル作ってみた。
431 Name: 名称未設定 [sage] Date: 03/04/12 13:11 ID: nlJewAEd Be:
なるほど。どちらもCellに画像をセットして返すのは同じで、そのタイミングが違うわけですねー。
なんだが別の部分でうまく動かなくなってまだうちでは成功してないわけですが(;´Д`)
432 Name: 名称未設定 [sage] Date: 03/04/12 18:45 ID: HC66oXv/ Be:
よく考えたら、
NSTableColumn の -(void)setDataCell:(NSCell *)cell; で NSImageCell をセットしていたら
-(id)tableView:(NSTableView *)tableView objectValueForTableColumn:(NSTableColumn *)tableColumn row:(int)row;
で NSImage を返せばOKで、無理に
-(void)tableView:(NSTableView *)tableView willDisplayCell:(id)cell forTableColumn:(NSTableColumn *)tableColumn row:(int)row;
で cell に NSImage をセットしなくても良いんだな。

cell の修飾は後者の方法という先入観があったので、
今まで気付かなかった。
何のために返り値が id なのかと小一時間(ry
433 Name: 名称未設定 [age] Date: 03/04/16 06:13 ID: 12HTIbHt Be:
>432
丁度テーブルで簡単にイメージを表示する方法をさがしてました。
参考にさせていただきました。ありがとうございます。
あー。快適です。

よいスレなのに人がいなくて寂しいのでage。
すいません。
434 Name: 名称未設定 [sage] Date: 03/04/16 20:10 ID: ta/8SmU2 Be:
自分の作ったソフトを公開する場合に、
そのソフトに付けるアイコンはどうやって調達されてますか?

デフォルトのままだと気が抜けたような感じだし、
自分でアイコンを作るのは絵心が無いので無理だしで、
どうも困ったものです。
435 Name: 名称未設定 [sage] Date: 03/04/16 21:18 ID: VCcUn7JM Be:
>>434
確かに Mac OS X になってアイコンの解像度が上がってから
というもの、自作アプリのアイコンを自作するのが極端に難しく
なった気がするなー(絵心のない人は特に)

「描く」という発想を捨て、デジカメで撮った写真を素材に
それを加工するという方針でいってはどうでしょう?
436 Name: 名称未設定 [sage] Date: 03/04/16 22:29 ID: 2TWhHO33 Be:
結構人の作ったアイコンを使ってるソフトってあるけど、
あれはちゃんと了解をとってるのかな?結構みんなパクリ?
437 Name: 名称未設定 [sage] Date: 03/04/16 22:40 ID: fVBJS3aw Be:
>>436
たとえば?
438 Name: 名称未設定 [sage] Date: 03/04/17 00:33 ID: 7TzdHjIj Be:
デジカメで撮った写真を元にするのはアリかもしれませんが、
何のソフトのアイコンか分からないとダメなので、
最終的には絵心というかセンスの問題ですねぇ。

それを考えると絵心のある他の人に作ってもらうというのが無難かもしれません。
ただ、他の人に作ってもらうのも難しいのですが。
439 Name: 名称未設定 [sage] Date: 03/04/17 01:33 ID: RGT/kCP0 Be:
写真をそのまま使ったJeditは激しくかっこわるかったぞ。
440 Name: 山崎渉 [(^^)] Date: 03/04/17 15:31 ID: 6I5vRaG+ Be:
(^^)
441 Name: 名称未設定 [sage] Date: 03/04/19 03:02 ID: 542+Wjis Be:
ググっても駄目だったので、お聞きしたいんですが,
アプリがクラッシュした時のCrash reportってどうやってみるんですか?
自作アプリが、ふとした拍子に落ちるんですが,原因が分かりません。
再現性もなし。
とりあえずCrash reportでもよめば何か分かるのかな,と思いまして。
442 Name: 名称未設定 [sage] Date: 03/04/19 03:21 ID: Y6JQeL8Z Be:
>>441
~/Library/Logs/CrashReporter/アプリ名.crash.log をダブルクリックしる!
443 Name: 名称未設定 [sage] Date: 03/04/19 03:28 ID: 542+Wjis Be:
あ、すんません。書き方が悪かった。
そのログの見方がわからないんです。。。

Thread 0 Crashed:
#0 0x9068ba50 in objc_msgSend
#1 0x9310e518 in -[NSMenuItem setImage:]
#2 0x00006d4c in -[AppController currentAppMenu]
#3 0x00004f9c in -[AppController addMenu]

みたいなのが続いてくんですが、
このThread 0 Crashed:の所は何となく下から上に向かって処理が流れていって、
この例で言うと
#1 0x9310e518 in -[NSMenuItem setImage:]
あたりでクラッシュしてるんかいな、と見当を付けてるんですが。

違いますかねぇ...
444 Name: 名称未設定 [sage] Date: 03/04/19 10:21 ID: EP/fWNyz Be:
>443
まさにそういう事かと。
その辺りのオブジェクトのメモリ確保とかに問題あるんじゃない?

というか自作アプリならProjectBuilderからデバッグモードで起動させた方が手っ取り早いと思う。
445 Name: 名称未設定 [sage] Date: 03/04/19 11:37 ID: 69ZrkNkS Be:
>443
ごく単純に考えればsetImage:に渡しているオブジェクトが解放されているせいかと。
446 Name: 名称未設定 [sage] Date: 03/04/19 12:10 ID: UqlDwCfO Be:
>>445
どんぴしゃです。
おはずかしい。。。
思いっきりsetimage:にわたすオブジェクトを他のところで解放してました。
NSDictionaryにパスと一緒にsetObject:forKeyしてたんですが、
その後ですぐ[image release];してました。
はぁー。。。

ありがとうございました。
447 Name: 名称未設定 [sage] Date: 03/04/20 01:47 ID: M4PLzZ0q Be:
Objective-Cでゲーム作ろうとしているのですが、
ゲームの画面を表示するView,GameViewを用意し
Thread走らせて、その中で画像のオフスクリーンへの描画
そしてそれが終わったらGameView対してdisplayを渡すという風にしたのですが、
(GameViewはオフスクリーンをView内に表示するだけ)
どうも動作が重く、画面更新もちゃんと行われません。

しかし、Timerを使うとちゃんと快適に動いてくれます。
やっぱりTimerを使ったほうがいいのかな。そうするとゲーム自体のコードが複雑になってしまう;
誰か助けて。
448 Name: 山崎渉 [(^^)sage] Date: 03/04/20 04:23 ID: ZHDoPsUy Be:
   ∧_∧
  (  ^^ )< ぬるぽ(^^)
449 Name: 447 [sage] Date: 03/04/20 18:25 ID: M4PLzZ0q Be:
?自己解決しました。
ウェイトをかけなかったために、動作に負担がかかってしまったみたいです。
?TickCountを使って30FPS程度に抑えたらスムーズに動きました。
450 Name: 名称未設定 [age] Date: 03/04/21 22:51 ID: NTulwzH4 Be:
空age(゚д゚)ウマー
451 Name: 名称未設定 [sage] Date: 03/04/27 00:07 ID: IrQMMfyt Be:
Prefix headerって何の為にあるのでしょうか?消しても大丈夫っぽいけど・・・
452 Name: 名称未設定 [sage] Date: 03/04/27 01:20 ID: x2s49Y6w Be:
コンパイルが速くなるんじゃないかな。たぶん。
453 Name: 名称未設定 [sage] Date: 03/04/27 02:32 ID: IrQMMfyt Be:
>>452
ありがとー
454 Name: 名称未設定 [] Date: 03/04/28 20:45 ID: NEdRKdm2 Be:
良スレ
455 Name: 名称未設定 [] Date: 03/04/29 21:39 ID: BcLcx+5r Be:
main( )からの戻り値が得られないんですが、どうすればいいの?

通常、こうなってますよね。
int main (...)
{
return NSApplicationMain(...);
}
でもNSApplicationMain( )は返ってこないんです。

どうやら、[NSApplication terminate:] 内部で exit(0) が呼ばれてます。

こうした処理はできますか?
int main (...)
{
int ret = NSApplicationMain(...);
// <-- 処理を入れたい
return ret;
}
456 Name: 名称未設定 [sage] Date: 03/04/29 21:42 ID: SxaNpOC3 Be:
ステータス返す値としてmainの戻り値を使わなければいいという話じゃなくって?
457 Name: 名称未設定 [] Date: 03/04/29 22:27 ID: BcLcx+5r Be:
>>456
>ステータス返す値としてmainの戻り値を使わなければいい

それも不思議なんです。
Cocoaにそれらしい関数がないようですが、どこからでも exit(number);
で終わらしていいということでしょうか。
458 Name: 名称未設定 [sage] Date: 03/04/29 22:43 ID: SxaNpOC3 Be:
exitで返さなくても、戻り値を返すための変数を呼び出し側で用意しておいて、
そこに値を放り込んで勝手に終了するとかいろいろ方法はあるでそ
459 Name: 名称未設定 [] Date: 03/04/29 23:38 ID: BcLcx+5r Be:
>>458
意味がわからない。

本題はNSApplicationMain( )から戻ってこないということなんですが。。。
フックとか、戻り値をセットする関数とか、mainのreturnに返ってくる
関数あります?

NextStepもそうなのかな。
これは、もしかして、バグ?
460 Name: 名称未設定 [sage] Date: 03/04/30 00:44 ID: EMvvjLY1 Be:
NSTextFieldとかに文字入力してる最中にも,
キーイベントとりたいんですけどどうしたらいいですか?

自力で調べたところ,
NSTextFieldがFirstResponderを奪ってしまっているために,
-keyDownが使えない見たいなんだけど...

なにかいい方法ないですかね?
461 Name: 名称未設定 [] Date: 03/04/30 02:23 ID: qWPrDMtc Be:
>>459
NSApplicationのリファレンスは読んだ?

terminate:の解説に、
>Don't put final cleanup code in your application's main() function-it will never be executed. If cleanup is necessary, have the delegate respond to applicationWillTerminate: and perform cleanup in that method.
とあるので、戻り値を自分でかえるのはダメなんでは?

どうしてもやるならカテゴリでterminate:を上書きとかになるけど、よくないよなー。
462 Name: 名称未設定 [sage] Date: 03/04/30 02:29 ID: m3zd3BWS Be:
>>459

憶測だけど、NSApplicationMain()はフレームワーク内部からのみ
値を返せる仕様になってるんじゃないかな。

一応、
[ NSApp stop ];
でmain関数に戻ってくることは可能なようです。
戻り値は指定できないようなので、グローバル変数で
受け渡す等の方法を使う必要がありそうですが。
463 Name: 名称未設定 [] Date: 03/04/30 08:47 ID: ywjZpSlR Be:
>>461
mainには戻らないとありますね。
ただ、戻らない(戻り値を返さない)理由になっていません。
「mainに戻らないから、後始末は delegateのapplicationWillTerminate:でやれ」
ということだけです。

terminate: では、delegateのコールと、内部Handlerの後始末して、exitが呼ばれる
ようでなので、サブクラスでする処理ことは、ほとんど意味ないですね。

>>462
modal loopだけで、main evevt loopは駄目なようです


本当はこうすべきでしょうね
int main(..)
{
NSApplicationMain(..);
return 0; // ここには戻ってこないぞ
}
戻り値を返す時、applicationWillTerminate:内部でexit(..);

説明がNSApplicationMainにないのが悪いんだが。
あるいは、途中で仕様が変わったのかも。

いやもう、おかしいって。
464 Name: 名称未設定 [sage] Date: 03/04/30 14:33 ID: gNcdv87c Be:
>463
そういう仕様です。
異常終了は、適当な場所でexitしてください。


どうしても気に食わないのであれば、NSApplicationのrunをオーバーライドして、
メインのNSRunLoopが終了可能にしてください。
465 Name: 名称未設定 [] Date: 03/04/30 14:34 ID: gNcdv87c Be:
-(viod)run
{
NSAutoreleasePool *pool;

while( ! isEndLoop ) {
//
pool = [[NSAutoreleasePool alloc] init];
[[NSRunLoop currentRunLoop] runMode:NSEventTrackingRunLoopMode beforeDate:
[NSDate dateWithTimeIntervalSinceNow:0.01]];

[pool release];
}
}

-(void)exit:(int)inState;
{
/**** NOT thread safe *****/
isEndLoop = TRUE;
state = inState;
}

-(int)exitState { return state; }

int main(...)
{
int ret;
NSApp = [[YourApplicationClass alloc] init];

NSApplicationMain(...);
//
return [NSApp exitState];
}
466 Name: 名称未設定 [sage] Date: 03/04/30 14:37 ID: gNcdv87c Be:
ごめん、sage忘れた。
467 Name: 名称未設定 [sage] Date: 03/04/30 17:29 ID: azR/4GRH Be:
>>460
NSTextFieldのDelegateに
-(BOOL)control:(NSControl *)control textView:(NSTextView *)textView
doCommandBySelector:(SEL)command
てのを実装すれば似たようなことはできる。この中で

if(command==@selector(moveUp:)){
}else if(command==@selector(insertTab:)){
}else if(command==@selector(performKeyEquivalent:)){
}...

といった感じに処理する。keyDownは@selector(keyDown:)で取れるかな? 試してないけど。
で、横取りしたらYESを返し、スルーするならNOを返す。
468 Name: 名称未設定 [] Date: 03/04/30 19:34 ID: ywjZpSlR Be:
>>464
>そういう仕様です。
そうですか。
サンプルありがとう、でも動かなかった。
これでは Eventを受け付けないようで。

検索したら、[NSApp run]で何をやっているのか質問した人が
いて、回答にApple Sample Codeのglutに例があると。

それらを参考にしてterminate:処理も考慮してながら、
いろいろ試しても戻ってこないから、おかしいと思い(gdb)disas
したら、なんと!runを抜けたあとのNSApplicationMainの最後で
exitが呼ばれてた。
もう、笑ってしまいました。
469 Name: 名称未設定 [sage] Date: 03/04/30 22:32 ID: 3qU3BKds Be:
>>468
>なんと!runを抜けたあとのNSApplicationMainの最後で
>exitが呼ばれてた。

ぐはっ!
NSApplicationのリファレンスのあのコードは嘘だったのか。
やられた。
470 Name: 名称未設定 [] Date: 03/04/30 23:30 ID: Oi25Yza2 Be:
固定値のNSRangeを定数として扱いたくって、次のようにしたのですが
"initializer element is not constant"
というコンパイルエラーが出てしまってうまくいきません。
こういうことを実現したい時ってどうすればいいのでしょうか。

const NSRange range = NSMakeRange(1, 100);
@implementation Test
...
@end
471 Name: 名称未設定 [sage] Date: 03/05/01 08:03 ID: mnnNqPbr Be:
NSRangeは構造体です。
構造体を初期化するコードは以下のようになります。

const NSRange range = {1 , 100};
472 Name: 名称未設定 [sage] Date: 03/05/01 08:19 ID: mvCRcF1/ Be:
>470

const NSRange range = {1,100};

あなたがお持ちの書籍の構造体の初期化に関する部分と
NSGeometry.hを見てください。

ただし、この書き方はAppleにより NSRange の定義が変えられたとき
コンパイル不能になる、もしくは意図しない動作をするようになるでしょう。
まあ、定義が変わることは、まずないでしょうけど。
473 Name: 460 [sage] Date: 03/05/01 20:50 ID: AYrs/qnu Be:
>>467

教えてくれてありがとう.
でも,私,Delegateあんまり詳しくないので,
もう少し,詳しく教えてくれませんか?

Delegateの作成とかがよくわかんないです.
で,作成したあとで,
-setDelegate:すればいいんですよね?

あと,横取りしたらYESとかスルーならNOとかも
ちょっとわかんないです.
よろしくおねがいします
474 Name: 470 [sage] Date: 03/05/01 23:31 ID: b5yckfKM Be:
>>471,472
ありがとうございました。おかげさまでうまくいきました。
C言語の勉強しなおしてきまつ・・・
475 Name: 名称未設定 [sage] Date: 03/05/02 22:24 ID: Wk9TZQjV Be:
Carbonから乗り移ろうとしています。
従来のToolBoxを用いたプログラミングだと
RunApplicationEventLoopやWaitNextEventを用いて自分でイベントループをまわしていましたが
Cocoaだとイベントループの部分はCocoaに任せる事になりますよね。

自分の場合、主にゲームを作るとき
main()→ゲーム画面の描画→イベントループ→描画→イベント...
というようにやっていたのですが
Cocoaだと自分でイベントループをまわせなくて困っています。
参考書を読んでも「イベントはCocoaが管理してくれるよーん」としか書いてない。
やはりスレッドを用意するべきなのか、Cocoaはゲームに向かないのか……
何か方法がありましたらお教えください。
476 Name: 名称未設定 [] Date: 03/05/03 00:25 ID: OHvswuV9 Be:
>>475
NSTimerを使うんでは。
477 Name: 476 [sage] Date: 03/05/03 00:34 ID: OHvswuV9 Be:
>>475
あといい忘れたけど、自分でイベントループをまわすこともできるよ。
NSApplicationのnextEventMatchingMask:untilDate:inMode:dequeue:とか。
でもこれでループするとNotificationとかが動かなくなったりするので、
currentRunLoopも自分で実行する必要があったような気が。
478 Name: 名称未設定 [] Date: 03/05/03 00:42 ID: dd4GQNX/ Be:
フリー開発環境あるとかいうのに、ちょっとさっぱりじゃない?
小サーイ世界でアプリつくっては(以下略)
479 Name: 名称未設定 [sage] Date: 03/05/03 05:26 ID: InjF+ARn Be:
自前のイベントループはNSRunLoop使えってことになってた気が
使ったことないけど
480 Name: 475 [sage] Date: 03/05/03 10:47 ID: kKEpC3P2 Be:
>>476
nextEventMatchingMaskでぐぐったら数件ヒットしました。
一応
? NSEvent *event;
while(1) {
event = [NSApp nextEventMatchingMask:NSAnyEventMask
untilDate:[NSDate dateWithTimeIntervalSinceNow:1/60]
inMode:NSDefaultRunLoopMode
dequeue:YES];
if (event) [NSApp sendEvent:event];
}
で無事にイベントループが行われました。
画像処理とあわせた時にどう動作するかわかりませんが。
ありがとうございました。
481 Name: 名称未設定 [] Date: 03/05/03 13:13 ID: vjwV+NvF Be:
Cocoaはやっぱり がずっと死んでますね。
復活しないんでしょうか。

興味のあるサンプルコード落とし損ねたままだった…。
482 Name: 名称未設定 [] Date: 03/05/03 13:15 ID: gWar0X+G Be:
本買え、本。
483 Name: 476 [] Date: 03/05/03 15:00 ID: OHvswuV9 Be:
>>479
NSRunLoopはNSApplicationMain()を実行すると自動的に起動する。
んで、NSThreadで別スレッドを作ると起動してないNSRunLoopができる。
別スレッドでイベントハンドリングするなら自前で起動する必要あり。
NSRunLoop自体はtimerとかの入力ソースを管理、実行するメソッドしかない。

>>480
基本はNSTimerじゃないかな?
NSTimer *drawTimer = [NSTimer scheduledTimerWithTimeInterval:1.0/60.0 target:view selector:@selector(display) userInfo:nil repeats:YES];
で描画とかを行って、
NSResponderの-keyDown:, -keyUp:をオーバライドするとか。

しかしゲームだったらnextEventMatchMask:...がよいか?
描画とかはwhileループ内で[view display]とかすれば良いだろう。
484 Name: 名称未設定 [sage] Date: 03/05/03 17:57 ID: 1Efb2Mo1 Be:
>>481

死んでるっていうか、消したんでしょ。サイト自体はやってますよ。
Topにインラインフレームで貼ってあったblogツールの日記が別サイトになって
通常のに戻った。

今はiTunesで再生中の曲を自分のサイトに表示するツールを更新中。
485 Name: 名称未設定 [sage] Date: 03/05/03 20:14 ID: WAGz7de+ Be:
>>482
本買ったけど、さっぱり...
486 Name: 名称未設定 [sage] Date: 03/05/04 21:00 ID: D13AZzoS Be:
>やはりスレッドを用意するべきなのか、Cocoaはゲームに向かないのか……
と書いてありますが、スレッドってあまり使わない方が良いのですか?
487 Name: 475 [sage] Date: 03/05/04 21:20 ID: fL39spbJ Be:
自分がそう書いたのは今までスレッドにあまり関して試したことがなかったからで。
できるだけ、いままでのスタイルを変えずにプログラムしたかったんです。
誤解招いてスマソ
488 Name: 名称未設定 [sage] Date: 03/05/05 00:33 ID: DsA4ncXp Be:
>>487
あ、そういうことだったのかサンクス。

僕はまだいろいろとよくわかってない素人なんですが、
ループ回したら虹色のカーソルも回っちゃって
困ったなー、あーそうかなるほどスレッドかー、っていう感じだったので。
とりあえず動いてるみたいなので良かった良かった。
489 Name: 名称未設定 [sage] Date: 03/05/05 02:20 ID: PMocT0kq Be:
>>486
デュアルプロセッサを視野に入れないのならスレッド処理はあまりメリットがない
スレッド管理のオーバーヘッドもあるし排他処理とか同期の問題もある
デュアルプロセッサ搭載マシンならマルチスレッドにした方が処理が速くなるみたいだけど
そうでないならタイマーでメッセージを送った方が楽にコーディングできるよね
ディスクアクセスとかアイドル時間の長い処理をそこかしこに入れてるなら
マルチスレッド処理も有効かもしれないけど
490 Name: 名称未設定 [sage] Date: 03/05/09 14:39 ID: S3w8cPun Be:
外国語勉強のための聞き取りソフトを作成し、数秒のMP3ファイルを再生しているのですが、途中でとまることがよくあります。止まる場所などは一定しません。書き方がわるいのでしょうか。

Window には NSMovieView を貼り付け、Outlet名は sound にしています。

なお、10.2にバージョンアップする前は、問題なく再生できました。

- (void) openMovie : (NSString*) asFilePath
{
NSURL *urlMovie = [[[ NSURL alloc ] initFileURLWithPath : asFilePath ] autorelease ] ;
NSMovie *movie = [[[ NSMovie alloc ] initWithURL: urlMovie byReference : YES ] autorelease ] ;
[ sound setMovie : movie ];
}
491 Name: 名称未設定 [sage] Date: 03/05/09 19:24 ID: fsuYUghz Be:
>>490

10.2におけるNSMovieViewのバグです。

音声ファイルを再生するだけなら、QuickTimeの
APIを直接叩くか、NSSoundを利用してください。
(10.2のNSSoundはMP3も再生できるようになってます)
492 Name: 名称未設定 [sage] Date: 03/05/10 02:56 ID: ii4r9XXY Be:
>>491

ありがとうございました。おかげさまで、ちゃんと再生できるようになりました。
493 Name: 名称未設定 [sage] Date: 03/05/11 02:49 ID: nCoMVCtm Be:
NSMenu の-(void)setSubmenu: forItem:で設定すると
-(void)submenuAction:(id)senderが呼ばれるんだよね。

@interface MyMenu : NSMenu {}... 略
@interface MyMenuItem : NSMenuItem {}...

MyMenu* m_menu = [[MyMenu alloc] initWithTitle: @"MenuTest"];
MyMenu* menu1 = [[MyMenu alloc] initWithTitle: @"SubTest"];
MyMenuItem* subItem= [[MyMenuItem alloc] init];
[m_menu setSubmenu: menu1 forItem: subItem];

@implemention MyMenu
-(void)submenuAction:(id)sender {}
@end

submenuAction:が呼ばれない。
SUBメニューがオープンされるときにコールバックされると思うのだが違う?
494 Name: 名称未設定 [sage] Date: 03/05/11 02:50 ID: nCoMVCtm Be:
x implemention
o implementation
495 Name: 名称未設定 [sage] Date: 03/05/12 20:45 ID: KTXKJCkJ Be:
NSViewのインスタンスを動的に生成したいんですが、
上に乗っけたいコントロールの類はいちいちコード内で配置していかないとダメなんですかね?
ビューを複製することができればIBで作ったビューを複製してやればOKだと思うんですが、ビューはNSCopyingに準拠してないし。
なんか方法知りませんか?
496 Name: 名称未設定 [sage] Date: 03/05/13 01:27 ID: ohU4DReE Be:
>>495

IBで新規にnibファイルを作り、Viewとコントロールを配置しておいて、
+loadNibNamed:owner:でロードすれば良いのでは?
497 Name: 495 [sage] Date: 03/05/13 04:00 ID: 2IoPviAb Be:
すいません、したいことをもっと明確に示すべきでした。
Tabの数が増えたり減ったりするTabViewで全てのTabに同じコントロールを乗せようと考えてたんです。
Tabの内容をコードでガリガリ書いてると分かりづらいなぁと思って、IBで書けたらいいなぁと思ってたところです。

View複製さえできれば、コントロール配置したNSViewをOutletで保持しといて、
NSView* newView = [templateView clone];
[tabitem setView: newView];
ってできると思うんですが。。。

やべ、もう寝ないと...
498 Name: 名称未設定 [sage] Date: 03/05/13 07:34 ID: UL4Gjmyq Be:
OmniWebの環境設定のプラグインで
インストールされているプラグインのリストが見られますが
(なんかCocoaGesturesまで見えているけど)
ああ言うロードされているバンドルのリストみたいなものは
どうやって所得するんでしょう?
499 Name: 名称未設定 [sage] Date: 03/05/13 15:24 ID: 9/HoAzNl Be:
>>497
496の言う通りにやればできるんじゃない?
IBでウインドウの上にコントロールを配置しておき
+loadNibNamed:owner:でロードして
ビューのインスタンスを取得してタブビューにセットする
一緒にロードされたウインドウを解放するのを忘れないようにね
マルチドキュメント・アプリケーションの作り方を参考にするといい
あれはひとつの.nibから複数のウインドウを作って管理するアプリなんだから
.nibをロード→viewのインスタンスを取得→viewをretain→
windowをrelease→viewをタブにセット→( ゚Д゚)ウマー
という手順でいいと思う

>>498
動的にロードされたバンドルも静的にロードされたバンドルも
Objective-Cでは区別されていないじゃなかったか
どうしても取得したいならロード時に記録しておくか
objc_getClassListで全てのクラスのリストを取得してから
既知のクラスを取り除くってのはどうよ?
プラグインパスを取得してその都度数えるという方法もある
NSBundleでロードされたクラスはNSArrayに記録しておくのが普通だから
それを利用するのが一般的だけどね
500 Name: 496 [sage] Date: 03/05/13 19:37 ID: ogfctm/W Be:
>>499

ちょっと補足させていただくと、
IBでビューを作成するのにウインドウは必要ないですよ。
"CustomView"をパレットからドキュメントウインドウにDnDすれば
インスタンス化出来ますから。
501 Name: 495 [sage] Date: 03/05/13 20:54 ID: 2IoPviAb Be:
できました!
ありがとうございました。
IBの"File's Owner"の意味がやっと正確に理解できました。
てっきり"File's Owner"==NSApplicationのインスタンスなのかと思ってました。

Viewが複製できないと思って、ちょっと「Cocoaの嫌なとこを見たな。。。」とか思ってたら、
もっとcoolな方法で解決していたとはさすが...
502 Name: 名称未設定 [] Date: 03/05/17 15:39 ID: TNaiboK7 Be:
画像ビューワをつくったんですけど
Finderでこのアプリで開くのデフォルトにできないんですけど
どうすればいいのれすか?
503 Name: 名称未設定 [sage] Date: 03/05/17 15:51 ID: g7wq4B5L Be:
実物が無いから何とも言えないけど。
Project Builderでファイルタイプを指定している?
504 Name: 502 [sage] Date: 03/05/17 16:07 ID: TNaiboK7 Be:
>>503
ファイルタイプってMIMEタイプかOSタイプのことですか?

info.plistのエントリの書類のタイプで
拡張子は指定していますけど
MIMEタイプとOSタイプは指定していません。
505 Name: 名称未設定 [sage] Date: 03/05/17 22:10 ID: g7wq4B5L Be:
LaunchServiceのキャッシュが壊れているカモ。
506 Name: 名称未設定 [] Date: 03/05/18 12:27 ID: 6rgw4rEV Be:
厨です。
cocoa-javaでjava.awtやjava.swingは使えますか?
やってみてるんですが、Build failedしてしまいます。
507 Name: 502 [sage] Date: 03/05/18 12:45 ID: jRJqhTtb Be:
>>505
う~ん…それらしいファイルを消してもダメですね。
とりあえずソースおさらししてみます。

http://www2.plala.or.jp/doidoi/macosx/PeeDeeeF.tar.gz

画像ビューワとか言いましたけどホントはPDFビューワです。
508 Name: 名称未設定 [] Date: 03/05/18 14:25 ID: 6pgqlOin Be:
>>506
しょうだつやの
の本に書いて有る
509 Name: 506 [sage] Date: 03/05/18 15:36 ID: 6rgw4rEV Be:
>>508 ありがとうございます
ちょうど手元にあったので見てみました。ら、少し書いてありました。
とにかくできることが分かり希望が持てました。

ところでご本人ですか?
510 Name: 508 [sage] Date: 03/05/18 19:22 ID: MxB2asZW Be:
>>509
その本持ってるから。
511 Name: 名称未設定 [sage] Date: 03/05/18 19:25 ID: cpgvRlRx Be:
>>509

呼び捨てやったけん思ったんかな。。

掌田先生のサイトにもいろいろ書いてあるよ。
512 Name: 506 [sage] Date: 03/05/18 20:15 ID: 6rgw4rEV Be:
ところで>>511さんは佐賀の人ですか?
513 Name: 名称未設定 [sage] Date: 03/05/18 20:36 ID: cpgvRlRx Be:
佐賀ん人じゃなかばい。
514 Name: 502 [sage] Date: 03/05/19 15:04 ID: AtS8k2O9 Be:
>>507
なんとか自己解決。
アプリケーションシグネチャをつけるとうまくいくようです。
むぅ~登録せねば。
515 Name: 山崎渉 [(^^)] Date: 03/05/22 04:59 ID: PYior5Bg Be:
━―━―━―━―━―━―━―━―━[JR山崎駅(^^)]━―━―━―━―━―━―━―━―━―
516 Name: 名称未設定 [] Date: 03/05/24 23:30 ID: Shi0MeT+ Be:
http://www.ntt.com/shop/service/cocoa/index.html

なんとNTTの新サービスはcocoa対応らしい・・・NTTすげえぜ。技術力。
517 Name: 名称未設定 [] Date: 03/05/24 23:50 ID: eck5OJ0k Be:
~● ~●   ~●◎ 受精
http://homepage3.nifty.com/coco-nut/
518 Name: あぼーん [あぼーん] Date: あぼーん ID: Be:
あぼーん
519 Name: 名称未設定 [] Date: 03/05/30 06:25 ID: G/PNGWQ+ Be:
OSX10.2.6が動いているWebサーバー機があるんですけど、
cocoaアプリでPerlスクリプトみたいなことは出来ますか?

ユーザのリクエストに応えてHTMLファイルを動的に生成して出力するとか。
WebObjectなんかがそれっぽいかと思うんですけど、何せ高いしねー。
520 Name: 名称未設定 [sage] Date: 03/05/30 07:17 ID: 65rg5mpj Be:
>>519
普通にUNIX用CGIアプリを書いて使えばいいんじゃない?
もしどうしてもCocoaフレームワークを使う必要があるなら
ターミナルアプリからCocoaフレームワークを使う方法もあったと思う
521 Name: 名称未設定 [sage] Date: 03/05/30 07:24 ID: EDgCWht0 Be:
>>519
「Perlスクリプトみたいなこと」って、CGIのことか?
CocoaアプリじゃなくてFoundationToolじゃだめなん?
522 Name: 519 [] Date: 03/05/30 08:31 ID: G/PNGWQ+ Be:
>>520,521
端的に言えば、
1、ProjectBuilderが使えて
2、Objective-cが使えて
3、Cocoaフレームワークが使えると便利かもしれない
という条件を備えた、CGIとして使えるアプリ(?)を作りたかったんです。

FoundationToolって、UNIXのコマンドラインですよね。
使ったことはないけど、もう少し調べてみるかな。サンクスでした。
523 Name: 519 [sage] Date: 03/05/30 08:33 ID: G/PNGWQ+ Be:
×という条件を備えた、CGIとして使えるアプリ(?)を作りたかった

○という条件で、CGIとして使えるアプリが作れるかを調べたかった
524 Name: 名称未設定 [sage] Date: 03/05/30 09:54 ID: 1W/oNIqX Be:
>523
AppKitを使わない。
CocoaFrameworkはAppKitを含むので、FoundationFramework単体でリンク。

どうしてもWeb上でGUI部品もFrameworkとして使いたければWebObjectを買いなさい。

以上。
525 Name: 名称未設定 [sage] Date: 03/05/30 16:20 ID: X8kW7aMc Be:
>>522

cgiはhtmlをテキストで返すコマンドラインアプリであればいいので、
Objective-Cでもまったく問題なく作れますよ。
新規プロジェクトからTool->Foundation Toolを選べばいけまふ。
526 Name: 519 [] Date: 03/05/31 00:50 ID: aRcsPIqz Be:
Foundation Toolを選んで出来た作ったコマンドラインアプリに「.cgi」の拡張子
をつけてSitesフォルダなどに入れ、それをブラウザから読み込めば実行できるんですか?

cocoaで初めてプログラミングを始めたので、標準出力とかイマイチ良く分かりませんが
がんばりまつ。ありがとう。
527 Name: 名称未設定 [sage] Date: 03/05/31 08:26 ID: O6LPmrCc Be:
>>526
とりあえずコマンドラインで動くものから作ってみたら
528 Name: 名称未設定 [sage] Date: 03/05/31 09:58 ID: Sf6VpD/a Be:
例えば @"1*(2+3)" といった NSString 文字列がある場合に、
この計算式の解を得る良い方法は無いでしょうか?
529 Name: 名称未設定 [sage] Date: 03/05/31 12:08 ID: VdKa+9Gb Be:
>528
http://www.tech-arts.co.jp/macosx/macosx-dev-jp/htdocs/2900/2923.html
へのレスを参照してみて下さい。
なんかいろいろと方法があってどれが一番良いかはよく分からんけど
530 Name: 名称未設定 [sage] Date: 03/05/31 15:20 ID: Sf6VpD/a Be:
>>529
ありがとうございます。
あまり簡単な方法は無いようですが、
スタックを使う方法を試してみて、
難しくてダメなら諦めて bc を使うことにします。
531 Name: 名称未設定 [sage] Date: 03/06/02 17:24 ID: wwheiyOK Be:
Cocoa+Javaしたいと思っている全くの初学者です。C関連の書籍は定番と言えるような本があがっていますが、Cocoa+Java方面でよい本があったらお教え頂けませんでしょうか。
Think Cでウインドウ出すのに挫折して幾星霜、web見ながらやってみたらウインドウがあっさりと出て。。。感動しました。
DevTools、昔は60万したって本当なんですか?
532 Name: 名称未設定 [sage] Date: 03/06/02 19:12 ID: NBqm4pnR Be:
>>513
いい本ないんだよね~。とりあえず、この辺はいかが?
http://www.h5.dion.ne.jp/~tuyano/X-Java-Tutor/
http://underwater.lab.nig.ac.jp/~takaho/computer/osx/

おいらもCocoa-Javaでやってたんだけど、Objective-Cやったら
おもったより簡単だったので、OCで書き直すか思案中。

ちなみに昔60万はWebObjectsのことでは?
533 Name: 名称未設定 [sage] Date: 03/06/02 19:13 ID: NBqm4pnR Be:
>>532のは>>513へのレス。失礼。
534 Name: 名称未設定 [sage] Date: 03/06/02 19:15 ID: NBqm4pnR Be:
どうも俺は513が好きなようだ。ショボーン
535 Name: 名称未設定 [sage] Date: 03/06/02 19:44 ID: wwheiyOK Be:
>>532
> いい本ないんだよね~。とりあえず、この辺はいかが?
> http://www.h5.dion.ne.jp/~tuyano/X-Java-Tutor/
> http://underwater.lab.nig.ac.jp/~takaho/computer/osx/
>
いいところ教えて頂きました、ありがとうございます。
#本買ってみようかな~

> おいらもCocoa-Javaでやってたんだけど、Objective-Cやったら
> おもったより簡単だったので、OCで書き直すか思案中。
>
すごいですね、なんとかJavaを少しでも分かりたいです。

> ちなみに昔60万はWebObjectsのことでは?
そうなんですか、ありがとうです。
536 Name: 名称未設定 [sageネジにはなりたくないです。] Date: 03/06/02 22:35 ID: YJuUKbZi Be:
機械の体がほしくて999で初心者スレからやってきました。

mac2年目の初心者です。
cocoaでソフトを作りたいのですが、参考になるお勧め本教えて下さい。
どんなソフトかというと、運転免許場とか医局の番号表示システムみたいな
感じです。フルスクリーンにできて、番号打って一度に何人分も表示できて、
その番号の人がブツを受け取ったら簡単に消せタリする、
そんなソフトを作りたいんですけど・・・・難しいっすかね?
いろんな言語とか精通しないとかけないっすか?
537 Name: 名称未設定 [sage] Date: 03/06/02 22:45 ID: VlbB3c6B Be:
自分はCocoaをはじめたときはamazonで
中村氏のMac OS X Cocoa プログラミングと
荻原氏のObjective-Cの本を購入。
入門はその2冊で、今はネット上の資料で開発しています。

あとそれぞれの言語に得意・不得意はありますが
実際に独自のソフトを作るとなると、関係するのは言語じゃなくて自分の技術とセンスだと自分は考えてます。
538 Name: 名称未設定 [sage] Date: 03/06/03 17:41 ID: FeZsaDw7 Be:
>536,537

>中村氏のMac OS X Cocoa プログラミングと
>荻原氏のObjective-Cの本を購入。
俺もその二冊かな。
はじめは「Cocoaはヤッパリ」だったんだけどね。
ただしどれも基礎的なCおよびプログラムの知識(文法とかプログラムの制御とか)が必要なので注意。
そこらへんを知らずにいきなり買ってもわからんと思うよ。
>mac2年目の初心者です。
っていうことなんで一応。

ちなみにCのお勉強は・・・
http://homepage1.nifty.com/toshio-k/prog/c/
こんなのはどうかな?
ちゃんと読んでないけど結構丁寧に書いてるっぽい。
そんなの知っとるわ、というのであれば余計なお世話スマソ。
539 Name: 538 [sage] Date: 03/06/03 17:45 ID: FeZsaDw7 Be:
>536
ちなみにその程度のソフトなら慣れれば二日もあれば作れる
と思う
540 Name: 名称未設定 [sage] Date: 03/06/03 17:49 ID: JqiBoCY7 Be:
Cocoa の流儀を学ぶならヒレガス本も欠かせないと思うが。
541 Name: 名称未設定 [sage] Date: 03/06/03 18:23 ID: Ga7VcSdP Be:
中村本や萩原本の前に
「はじめてのC」とか「やさしいC」とか「かんたんなC」みたいなC言語の入門書を一冊よんどけよ。
542 Name: 名称未設定 [sage] Date: 03/06/03 23:21 ID: Rw7pKKEA Be:
結城本がいいよ。
543 Name: 名称未設定 [sageネジにはなりたくないです。] Date: 03/06/03 23:27 ID: YDNyciP7 Be:
何が良いんだかさっぱりですが、とりあえずCの言語が
分かんないといけないんでつね。。。cからはじまる恋物語でも
読んで勉強してきます。

初心者の俺でもこのソフトならかなり簡単な部類だよなぁッと思ってました。
頑張ってみます。
544 Name: 名称未設定 [sage] Date: 03/06/04 21:03 ID: hlOYrlfe Be:
以前までREALbasicを触っていました。
Rbの時、インターネットへの接続はSocketクラスを用意して、
PortとAddressを設定して、Writeメソッドで文字列のデータを送る。
とやっていました。
ドキュメント等見てCocoaではNSSocketPortを使うんだなぐらいまではわかりましたが、
NSSocketPortを見ても何がなんだかよくわからない状況です。
RbのSocketクラスのように行いたいのですが、ご説明願えますでしょうか。
545 Name: 名称未設定 [sage] Date: 03/06/04 21:35 ID: BgUAWUkb Be:
質問です。
NSTaskを使ってtarの自分用フロントエンドを作っていまして、
tarの場所を 
[aTask setLaunchPath:@"/usr/bin/tar"]
みたいな感じで指定しているのですが、
例えば、cocoaWgetのようにtarをアプリケーション内にバンドルするにはどうしたらよいのでしょうか。
御存じの方いましたらよろしくお願いします。
546 Name: 名称未設定 [sage] Date: 03/06/04 21:45 ID: WgVb2pVw Be:
/usr/bin/tar から引っこ抜いてきてファイルを追加すればいいんでないの?
547 Name: 名称未設定 [sage] Date: 03/06/05 00:06 ID: tY8V3TTn Be:
>>544
わたしもRbからの転向者です。初心者ですので、詳しいことはわかりませんが、
NSURLとNSURLHandle を使ってインターネットへ接続しています。

548 Name: 名称未設定 [sage] Date: 03/06/05 00:21 ID: uq3nlk02 Be:
>>544

HTTPを介したデータの受信を行なうだけなら、
>>546の通りNSURLとNSURLHandleをクラスを
利用すれば出来ます。

その他のプロトコルを利用したい場合や、データの送信を行いたい場合は
C言語の領域に降りてSocketを作成する必要があります。
なお、作成したSocketはNSFileHandleクラスで扱うようにすると便利です。

NSSocketPortはちょっと特殊な用途に使うクラスなので、
とりあえず忘れてください。
549 Name: 名称未設定 [] Date: 03/06/05 00:56 ID: 7tSHTOFd Be:
久しぶりにProjectBulderを立ち上げたのに、何も使えなくなってた。
「新規プロジェクト」→「CocoaApplication」を選んだだけのプロジェクトさえも
ビルド完了しません。こんなエラーで・・。

Compiling /Users/ユーザ/プロジェクト/プロジェクト_Prefix.h(5個のエラー)
 "/User/ユーザ/プロジェクト/プロジェクト_.Prefix.h:6"からインクルードされているファイル内
  "Foundation/Foundation.h : No such file or directory
他「No such file or directory」がいろいろ・・・。

 システムも再インストール(アーカイブインストールですが)したし、デべツールも
再インストールしたし、PB,IBの初期設定も捨てたし・・・万策尽きました。
 システムをクリーンインストールしたら解決するんですかねぇ。
550 Name: 名称未設定 [sage] Date: 03/06/05 07:35 ID: aeSpNlll Be:
>>544
HTTPやFTPを使うのならNSURLとNSURLHandle。
それ以外ならsmallsockets使えば出来る。多分。
http://smallsockets.sourceforge.net/
551 Name: 549 [sage] Date: 03/06/05 11:00 ID: 7tSHTOFd Be:
解決しました。
デベツールのディスクイメージのチェックサム検証をスキップしてたのがいけなかった
みたいで、スキップしないでいるとDiskCopyが不正終了しました。
仕方ないのでDevToolをADCからもう一度ダウンロードしてインストールしたら復活!
インストール終了できても中身が壊れてるなんてこともあるんですね。意外だ。
552 Name: 名称未設定 [sage] Date: 03/06/05 11:09 ID: slA/cPPY Be:
>545
wgetと違ってtarを内蔵する意味はないと思うが・・・
単に方法を知りたいということであれば>546の通り
アイコンと同じようにプロジェクトにファイルを追加すれば良し
553 Name: 名称未設定 [sage] Date: 03/06/05 11:55 ID: QDeLW3Pz Be:
>>544
きっとJavaのほうが楽な予感。。
554 Name: 名称未設定 [sage] Date: 03/06/05 23:19 ID: 2wDtXBFu Be:
>>547,548
ありがとうございます。NSSocketPortは違ったのですね。
NSURLとNSURLHandleについて調べてみます。

>>553
やっとObjective-Cに慣れてきたところなので、これ以上増えると頭がパンクしてしまいます
Javaの方もいつかさわってみたいです。
555 Name: 名称未設定 [] Date: 03/06/06 13:33 ID: rT0yvc1i Be:
AppleMailのような、虫眼鏡アイコンの検索オプションがついた検索フィールドを作り
たいと思い(NSTextFieldと一緒に)NSPopUpButtonを-setPullsDownして配置したの
ですが、このPopupButtonについてくるMenuItemに-setState:NSOnStateを送っても
チェックがついてくれません。

InterfaceBuilderでも、このMenuItemのインスペクタでは「State」がグレーアウト
してるし、やっぱりチェックマークをつけることはできないんでしょうか。
556 Name: 名称未設定 [sage] Date: 03/06/06 21:14 ID: YuWDq+q3 Be:
遅レスすいません。

>546,552

ありがとうございます。NSBundleを使ってpathを指定してやればうまくいきそうです。
557 Name: 名称未設定 [sage] Date: 03/06/06 22:50 ID: WSvgpba2 Be:
>555
本当にNSPopUpButtonなのかな?
Mailでは普通のNSButtonにメニューをくっつけてるのかも。
Mailのnibファイルはのぞいてみた?
(ちょっと見てみたんだけどnibファイルが多すぎてどこに入ってるのか分からんかった。
 ちなみにSafariのバックボタンはNSButtonのサブクラスになってる)

ところでMailは英語以外のnibファイルを開けないのはなぜだろう?
558 Name: 名称未設定 [sage] Date: 03/06/06 22:59 ID: 85f0ql6C Be:
まあ、関係ないけどさ
Obj-Cに限らず、オブジェクト指向言語はひとつ理解(言語仕様じゃなくてオブジェクト指向そのものを)
すると、他の言語もほとんど問題なく学習できるよ。
JavaはベースがCだから特に楽なんじゃないかな。
559 Name: OC厨 [sage] Date: 03/06/07 13:26 ID: 9kccQz8f Be:
Cの入門書は一通り読みました。いまは中村氏のcocoa本を読んでいますが、
いまいち「オブジェクト」が解りません。
OCのオブジェクトはJAVAのそれとよく似ていると聞いたことがありますが、
JAVAの本も読んだ方がいいのでしょうか?

またオブジェクト初心者にも解るOCのオブジェクト解説のある書籍、
またはサイトがありましたら教えていたていただけないでしょうか?
よろしくお願いします。
560 Name: 名称未設定 [sage] Date: 03/06/07 13:31 ID: xeIpC+8n Be:
>>559
558も言ってるように、ひとつの言語でもやってる内にわかります。
ぱーっと世界が開けるように、わかります。
561 Name: 555 [sage] Date: 03/06/07 13:42 ID: beqrgONE Be:
>>557
恥ずかしながら、Mailみたいな機能を再現したいと思っていただけでNibは調べてませんでした。
NSButtonにメニューをくっつけると言うのもアリですか。
でも、Safariのボタンにはチェックを入れる必要がないのでNSPopUpButtonでもいけそ
うですけどねぇ。
もう少し、試行錯誤してみます。ありがとう。
562 Name: 名称未設定 [sage] Date: 03/06/07 13:42 ID: e92/S+a9 Be:
中村本の次に読むとすれば荻原本かなぁ。
だんだん知識を塗り重ねて行くうちに
オブジェクト指向も分かるようになる気がする。
563 Name: 名称未設定 [sage] Date: 03/06/07 14:40 ID: LXwTev9c Be:
自分はHyperCard、REALbasicから始めたからオブジェクト指向ってのはおぼろげながらわかってた。
言葉で理解するよりも、経験を積み重ねていったほうがおのずとわかってくるとおもうよ

荻原氏のはなかなか重宝しています。中村氏のは一度読んで実践して終わりだったけど、
こっちだと何度も開くことになる。
564 Name: 名称未設定 [sage] Date: 03/06/07 15:50 ID: aqfgDdb7 Be:
>561
Safariのボタンは「ボタン長押しでメニュー表示」のためにNSButtonのサブクラスにしてるんじゃないかな?

>559
俺はC++の本でオブジェクト指向を勉強したな。
C++自体は一通り本を読んだだけで実際には一度もプログラムを書かなかったけど、
オブジェクト指向という概念そのものは役に立った。
>562,563のいう通り最終的には経験が一番重要だけど、
最初はなんかしらの読み物で概念を知っておいた方が良いと思うよ。
それで全てを理解できるわけはないけど、これからどんなことをしようとしているのかくらいは分かってないと
いくら勉強しても身に付かないと思う。
565 Name: 名称未設定 [sage] Date: 03/06/07 22:12 ID: A9i4i/FL Be:
NSPipeについて御存知の方いませんか。

gzip -dc hoge.tar.gz | tar xf -

のようにコマンド間をパイプで繋ぎたいのですが、Appleのドキュメントを読んでもよく分かりません。。。
(tar xzf hogeをつかうのはなしで)

[task_Gzip setStandardOutput:aPipe];
として
[task_Tar setStandardInput:aPipe];
としてもダメでした。

NSFileHandleを使って標準入力をバッファから読み込めばうまく行くような気がするのですが、
うまくコードにする事が出来ませんでした。



/*この辺はやっぱりM$の方が(ry
ももう少しなんとか(ry */
566 Name: OC厨 [sage] Date: 03/06/07 22:31 ID: 9kccQz8f Be:
レスありがとうございます。

どうせならOCでオブジェクト指向が学べたら、と思ったのですが。
JAVAやC++なみに人口が増えないと書籍層が充実しないというところでしょうか。
Javaでオブジェクト指向入門をしたいと思います。
567 Name: 名称未設定 [sage] Date: 03/06/07 22:34 ID: dwlJu85A Be:
いや、だからさ
オブジェクト指向は「何々で学ぶ」ってもんじゃないんだって。
分からないうちはJavaだろうが何だろうが分からない。
568 Name: 名称未設定 [sage] Date: 03/06/07 23:11 ID: t+oK0Ycu Be:
>567
いやObj-Cの本(というかCocoa本)には「オブジェクトとは何か」という基本を説明している本がない現状では、
その部分をJAVAなりC++なりの本で学ぶのは大事だと思うよ。

>566
別にJAVAそのものを勉強する必要はないのでご注意を(もちろん勉強したって無駄じゃないけど)。
http://www5c.biglobe.ne.jp/~ecb/java/java00.html
例えばここで4,6,7,8あたりをざっと目を通して終わりで良いんじゃないかな?
(このページを推称するわけじゃないよ、ぐぐったらそれらしいのが出てきただけ)
具体的なことはCocoaでソフトを作っているうちにだんだん分かってくるから心配はいらないと思う。

本当は0の0から(変数とはとか、オブジェクトとは、から)Cocoaを勉強できる本があるとベストなんだけどね
569 Name: 名称未設定 [sage] Date: 03/06/07 23:41 ID: e92/S+a9 Be:
>>565
どうも NSPipe は少しでも大きいデータを流そうとすると極端に重くなるので、
中間ファイルを作ることを勧めます。
570 Name: 565 [sage] Date: 03/06/08 00:25 ID: MeK+6oxv Be:
>569
レスどうもです。

>どうも NSPipe は少しでも大きいデータを流そうとすると極端に重くなるので、

もしよければどのようにデータの受け渡しをするのか教えていただけませんか。
571 Name: 名称未設定 [sage] Date: 03/06/08 02:01 ID: CYa6Vi2r Be:
>>570
中間ファイルを用いる方法は面倒なことに気付いたので、
「自分ならこうする」という別の方法を書いてみます。

まず、以下の内容のシェルスクリプトを hoge.sh という名前で保存し、
それをプロジェクトに取り込む。
#!/bin/sh
gzip -dc $1 | tar xf -
exit 0

次に、以下の内容のメソッドを書く。
-(void)something:(NSString*)filename{
NSString *script=[[NSBundle mainBundle] pathForResource:@"hoge" ofType:@"sh"];
NSString *archive=[filename stringByExpandingTildeInPath];
NSTask *task=[[[NSTask alloc] init] autorelease];

[task setCurrentDirectoryPath:[archive stringByDeletingLastPathComponent]];

[task setLaunchPath:@"/bin/sh"];
[task setArguments:[NSArray arrayWithObjects:script,archive,nil]];

[task launch];
[task waitUntilExit];
}

それで、このメソッドを呼んで引数として解凍したいファイルのパスを渡せばOK。
572 Name: OC厨 [sage] Date: 03/06/08 10:05 ID: G2ZEYfMM Be:
>>568
良いサイトを紹介いただきありがとうございます、早速読んでいます。

>具体的なことはCocoaでソフトを作っているうちにだんだん分かってくるから心配はいらないと思う。
そう願います。なーんちゃって感覚でCocoa及びObjective-Cに慣れていきたいです。

>本当は0の0から(変数とはとか、オブジェクトとは、から)Cocoaを勉強できる本があるとベストなんだけどね
まさにそう思います。
573 Name: 565 [sage] Date: 03/06/08 12:05 ID: MeK+6oxv Be:
>571

とても詳しいレス有り難うございます。
早速ProjectoBuilderで作成してみたところうまく動作しました!

ただ、シェルスクリプトは引数に半角スペースや[、](中カッコ?)が入ると認識しない事に気が付きました(涙

ho(半角スペース)ge.tgzというファイルを用意して
ターミナルから
gzip -dc ho\ ge.tgz | tar xzf -
これは動作するんですが

上記hoge.shを利用してターミナルから
hoge.sh ho\ ge.tgzとすると

tar: Failed open to read on ho <No such file or directory>
gzip: compressed data not read from a terminal. Use -f to force decompression.
For help, type: gzip -h

となります。シェルスクリプトにエスケープシーケンスを認識させるにはどうしたらよいのでしょうか…


574 Name: 名称未設定 [sage] Date: 03/06/08 13:12 ID: 0L+H07wP Be:
>>566
俺はOCの萩原本でオブジェクト思考理解したよ
要は内容を受継いで変更や拡張できる部品を集める形でつくる
よって変更、拡張、他のプロジェクトの再利用が用意
ってこと(違う?
575 Name: 名称未設定 [sage] Date: 03/06/08 14:56 ID: rXNVgJxB Be:
 
576 Name: 568 [sage] Date: 03/06/08 15:34 ID: sQOSQfYR Be:
>574
本当だ
荻原本にもオブジェクト指向の説明があったね。
>いやObj-Cの本(というかCocoa本)には「オブジェクトとは何か」という基本を説明している本がない現状では、
というのは俺の勘違い
スマソ
577 Name: 名称未設定 [sage] Date: 03/06/08 15:59 ID: 2AS1RLxn Be:
>>573
hoge.sh を gzip -dc "$1" | tar xf - としてみては
578 Name: 名称未設定 [] Date: 03/06/08 18:37 ID: AXrZKLX3 Be:
今さらかもしれんが、

>>565
NSTask *gzipTask = [[NSTask alloc] init];
NSTask *tarTask = [[NSTask alloc] init];
NSPipe *pipe = [NSPipe pipe];

[gzipTask setStandardOutput:pipe];
[gzipTask setLaunchPath:@"/usr/bin/gzip"];
[gzipTask setArguments:[NSArray arrayWithObjects:@"-dc", @"hoge.tar.gz", nil]];
[tarTask setStandardInput:pipe];
[tarTask setLaunchPath:@"/usr/bin/tar"];
[tarTask setArguments:[NSArray arrayWithObjects:@"-xf", @"-", nil]];

[gzipTask launch];
[tarTask launch];
これでうまくいくと思うが。gzipTaskをlauchし忘れたとか。

終了を判定したい場合は、NSTaskDidTerminateNotificationが使える。
tarTaskの出力を利用したい場合はfileHandleから読むことになる。

>/*この辺はやっぱりM$の方が(ry
>ももう少しなんとか(ry */
具体的に聞きたい。ドキュメントのことか。

>>569
重くなるというのはどういうこと?
上記のコードでもそんなに差はなかったが(18MBくらいのファイルでターミナルと2、3秒の差)
[task waitUntilExit]で待つと他のイベントがハンドリングされないから?
579 Name: 名称未設定 [sage] Date: 03/06/09 21:23 ID: Zd9NcuPh Be:
Cocoaについて教えて下さい。

#import <Cocoa/Cocoa.h>
#import "MyClass1.h"
@interface AppContoller : NSObject
{
MyClass1 *anInstance;
}

このように自作クラスのオブジェクトを他のクラスのインスタンス変数にしようとすると

parse error before "MyClass1"

とコンパイラにおこられるんですが、
NS~というクラスのおぶじぇくとでないとインスタンス変数にはできないのでしょうか。
580 Name: 名称未設定 [sage] Date: 03/06/09 21:39 ID: ZzrENAjQ Be:
>>579
#import <Cocoa/Cocoa.h>
#import "MyClass1.h"

@class MyClass1;

@interface AppContoller : NSObject
{
MyClass1 *anInstance;
}

としたらどうですか?
581 Name: 579 [sage] Date: 03/06/10 17:35 ID: MT4H0P8v Be:
>580


@interface AppContoller : NSObject
{
id anInstance;
}


このようにid型で宣言したらうまくいきました。
582 Name: 名称未設定 [sage] Date: 03/06/10 20:18 ID: yYCfN7wD Be:
>>581

id型にしてしまうと、MyClass1が持っていないメソッドを
anInstanceに送ってしまった際の警告が抑止されてしまうので、
おすすめできる方法ではありません。

#import <Cocoa/Cocoa.h>

@class MyClass1;

@interface AppContoller : NSObject
{
MyClass1 *anInstance;
}

とするのが良いと思います。>>580に似ていますが、
#import "MyClass1.h"の宣言を削除しています。
ヘッダから削除したこの宣言は、かわりにAppContoller.mファイル
の方に書いておいてください。
583 Name: 582 [sage] Date: 03/06/10 20:25 ID: yYCfN7wD Be:
・ヘッダファイルでは自分のスーパークラスだけ#importする
・その他のクラスは@classディレクティブで宣言する
・@classディレクティブで宣言しておいたクラスのヘッダファイルは
実装ファイル(.m)で#importする

としておくと、ヘッダファイルの依存関係で悩まされることは
通常無いと思います。
584 Name: 名称未設定 [sage] Date: 03/06/11 16:14 ID: wX/0F2JE Be:
Objective-C Pocket Reference買っちゃった。
CocoaオンリーかとおもってたらGNU関係も対比して書いてるじゃん。
翻訳出るかな?これ。出たら友達に勧めよう。
585 Name: 名称未設定 [sage] Date: 03/06/11 20:55 ID: YSUJ+Xir Be:
JavaでCocoaアプリを作る時なんですけど、製作の過程はどのような感じになるの?
Javaの知識だけあればできるの?
それとも、あの英語だらけで調べるのも一苦労のマニュアルを見ながらでないと
作れないの?
586 Name: 名称未設定 [sage] Date: 03/06/11 20:58 ID: 2rjAjKWp Be:
どのみち英語で苦労しなきゃならんと思われ
587 Name: 名称未設定 [sage] Date: 03/06/11 21:00 ID: YSUJ+Xir Be:
いやー、マイクロソフトの開発環境は日本語情報充実してたしなぁと思って。
JavaならObj-Cよりも日本語の情報で苦労しなくてすむかなと思ったんだけど
そういうもんじゃない、ってことですかね?
588 Name: 名称未設定 [sage] Date: 03/06/11 21:01 ID: 67/wKApX Be:
ObjC使ってますが、だいたいはProjectBuilderに付属したリファレンスを見てやってます。
589 Name: 名称未設定 [sage] Date: 03/06/11 21:03 ID: YSUJ+Xir Be:
>>588
クラスライブラリが全部英語だとすごく疲れませんか?
僕は疲れます。
読み進むスピードが日本語の3分の1くらいになるし…
590 Name: 名称未設定 [sage] Date: 03/06/11 21:41 ID: 5+8tryGc Be:
>>589
ここを利用してみれば?
http://www.oomori.com/cocoafw/index.html
参考にするといった程度だけど。
591 Name: 名称未設定 [たまにはage] Date: 03/06/11 21:56 ID: W5NOQIG6 Be:
>587
>JavaならObj-Cよりも日本語の情報で苦労しなくてすむかなと思ったんだけど
正解。
でもCocoaのリファレンスが全て英語なのでそこで苦労する。
JavaとObj-Cの情報の差なんて微々たるものだよ。
Obj-Cの情報なら荻原本で大体事足りるし。

>589
疲れる。
っていうか必要な部分を斜め読みするだけでまともに読んだことないな。
なんで後から「こんなクラスがあったのか!」って後悔すること多数。
あぽーもWin32からのポーティングガイドなんて訳してないで
Cocoaリファレンスを訳してほしいもんだ。
592 Name: 名称未設定 [sage] Date: 03/06/11 23:04 ID: YSUJ+Xir Be:
というより、本当に教えてほしい点は(出し惜しみしてたわけじゃなくて)
「Cocoaフレームワークの中でJavaのライブラリを使うだけ」なのか、
「Javaで組んだら勝手にCocoaアプリになる」のか、ってことかも。

つまりCocoaのお勉強が絶対条件として立っているなら、
別にjavaでもObj-Cでも一緒だなぁと思いますし。
言語仕様自体の違いなんて問題にならないから。
593 Name: 名称未設定 [sage] Date: 03/06/11 23:46 ID: nVInKmba Be:
>>592
>「Javaで組んだら勝手にCocoaアプリになる」
この辺がよく分からんが。

Pure Javaで組んだらPure Javaのモノが出来る。
Pure JavaでQtやGTKのネイティブアプリが出来る訳でないのと一緒で、
Pure JavaでCocoaアプリが出来る訳じゃない。

Objective-CでCocoaを使う事の利点はいざと言う時に
すぐにCarbonに降りて処理出来る事。
エイリアスの解決とかちょっと凝った事をしようとすると
Carbonが必要になる。

逆に、そんな些細な事は気にしないでCocoaの上だけで完結するなら
Javaにはガーベジコレクタが有るし
既存のクロスプラットフォームで優秀なライブラリが
公式、非公式に大量に存在する。特にXML関連はJavaが強い。

つっても、要求仕様に併せて自分の好きな方を選べばよろし。
Objective-CもJavaもよく似ているから
片方をある程度知っていればもう片方を勉強するのは
そんなに難しい事じゃないよ。

問題は、両者の似て非なる部分が微妙で混乱しがちな所か。
594 Name: 名称未設定 [] Date: 03/06/12 01:32 ID: 9EJS/9Na Be:
cocoa javaならこれ
http://www.amazon.co.jp/exec/obidos/ASIN/4798003530/ref=sr_aps_b_/249-4965523-9500347
読んでからうんちく垂れれ
595 Name: 名称未設定 [sage] Date: 03/06/12 01:39 ID: UTjBZJM1 Be:
>>594
へぇー、こんな本があったのか。
Cocoaはやっぱりとどっちが分かりやすいだろう…
596 Name: 名称未設定 [] Date: 03/06/12 01:52 ID: 9EJS/9Na Be:
どっちがって、「別の本」だよ。内容的に。
あくまでJavaの本であり、Javaがわの視点から書かれてるから。
597 Name: 名称未設定 [] Date: 03/06/12 02:37 ID: OrCJHHiY Be:
>>595
この本買ったけどわりといいと思うな。前半Javaそのもの、後半Cocoaをからめて、ってかんじで
しょうか。まだ前半を少ししかよんでないけど。
「Cocoaはやっぱり」はObj-Cベースだと言う事もありJava系のものをさがしてたらコレがあって。
かなり易しく噛み砕いているので僕のような初学車でもいけるかなと思います。
598 Name: 名称未設定 [sage] Date: 03/06/12 21:58 ID: UTjBZJM1 Be:
http://www.amazon.co.jp/exec/obidos/ASIN/4877780939/qid=1055422586/sr=1-2/ref=sr_1_2_2/249-6240115-4070723
Cocoa+Java―MacOS X 10.1対応版????MacOS Ⅹプログラミング入門

これと>>594ならどっちのほうがいいと思いますか?
どっちかにしようと思ってるんですけど。
599 Name: 名称未設定 [] Date: 03/06/12 23:42 ID: G7NEAu9z Be:
>>598
Amazonにはレビューが付いてるだろ。レビューが無い本は売れてないとも読める
600 Name: 名称未設定 [sage] Date: 03/06/12 23:44 ID: UTjBZJM1 Be:
>>599
この本、前のりビジョンにはいくつかレビューついてるんですよ
601 Name: 名称未設定 [] Date: 03/06/13 22:20 ID: O6wb8MBr Be:
ファイルのフルパスを表示する時に、本当のファイルネームでのパス
を放り込んだらローカライズされたパスに直してくれるクラスとかありますか?
602 Name: 名称未設定 [sage] Date: 03/06/13 22:25 ID: pvegSkor Be:
NSFileManagerのドキュメント内を探せ。
603 Name: 名称未設定 [] Date: 03/06/13 22:35 ID: O6wb8MBr Be:
-displayNameAtPathかと思ったけど、
これって返ってくるのがlastPathComponentだけみたいなんですが・・・。

/User/aaa/Documents/abc.jpgというフルパスを渡したら
/ユーザ/aaa/書類/abc.jpgというNSStringが返ってくるクラスはFileManagerにあります?
604 Name: 名称未設定 [sage] Date: 03/06/13 22:41 ID: fIQIYpV+ Be:
そういう場合はアレだ。

どうせ6つぐらいしかないんだから
手 動 で
605 Name: 名称未設定 [] Date: 03/06/13 22:46 ID: 2yT3des3 Be:
森永
606 Name: 名称未設定 [sage] Date: 03/06/13 22:55 ID: pvegSkor Be:
>>603
だからちょっとは探せ。
607 Name: 601 [] Date: 03/06/13 23:28 ID: O6wb8MBr Be:
お騒がせしました。-componentsToDisplayForPathですね?
参考までに超意訳のリファレンスをのせときます。

componentsToDisplayForPath:
- (NSArray *)componentsToDisplayForPath:(NSString *)path

パスのコンポーネントを表すNSStirng(既にAutoreleaseされています)を要素とする
NSArrayを返します。このパスの要素は、ユーザが目にする形であらわされています。
(Finderやオープン・セーブダイアログ等におけるような)
このメソッドで得られるパスは、ファイル操作などに使用することはできない、ユーザに
表示するためだけのものです。

・・のはずなのに、なぜかnilしか返ってこない・・・。
608 Name: 601 [sage] Date: 03/06/13 23:36 ID: O6wb8MBr Be:
何度もすみません。解決しますた。
-componentsToDisplayForPathに渡すのは、今現在実際に当該ファイルが存在する
パスしか渡してはダメみたいです。以前に保存していたファイルパスを表示するという
場合には注意がいりますね。
609 Name: 名称未設定 [] Date: 03/06/15 09:32 ID: gL/WGc+X Be:
Cの関数からobjective-cの処理を呼び出す方法は無いのでしょうか?

objective-c側から普通のC関数の呼び出しは、そのまま記述できるのを
確認したんだけど。(self とかは使えないみたいだけど、それはまた別問題として、、)

具体的には、昔cでつくった処理からIBで作ったCocoaの表示処理を呼び出したいんです。
610 Name: 名称未設定 [sage] Date: 03/06/15 09:38 ID: OkyjEh1b Be:
CocoaもAPIはただの関数な訳で使えないことは無いと思うけど
Cocoaのクラスを呼び出すのは不可能だと思う。
611 Name: 609 [] Date: 03/06/15 09:47 ID: gL/WGc+X Be:
反応早!

すんません。 Cocoaというレベルでなくて言語仕様レベルの話なんです。
昔作った処理の再利用が目的なんで、うわっかぶせでobj-c とcの
橋渡しができればいいんです。

C++経由というのをいま探索中です。
612 Name: 名称未設定 [sage] Date: 03/06/15 09:54 ID: OkyjEh1b Be:
ん?
Cの関数内から呼び出したいだけで、別にCで作ってるわけではないのね?
んじゃあ、Obj-Cなんだったらそのまま呼び出せば普通に使えると思うんだけど。
613 Name: 名称未設定 [sage] Date: 03/06/15 11:51 ID: DseHzMTf Be:
ほれ

--- main.c ---
main() {PrintStrObj();}
----------------
gcc -c main.c

--- print.m ---
#import <Cocoa/Cocoa.h>
void PrintStrObj()
{
NSAutoreleasePool* pool = [[NSAutoreleasePool alloc] init];
printf([[NSString stringWithString: @"Hello World!"] cString]);
[pool release];
}
---------------
gcc -c print.m

gcc -o p main.o print.o -framework Cocoa
614 Name: 名称未設定 [] Date: 03/06/15 22:03 ID: yvDfhKw+ Be:
Cocoaはやっぱり のweb版ページ消えた?
615 Name: 名称未設定 [sage] Date: 03/06/15 22:06 ID: kPFDhgUZ Be:
だいぶ前に。
616 Name: 名称未設定 [sage] Date: 03/06/19 19:54 ID: PnXyS1H+ Be:
#import <Cocoa/Cocoa.h>

int main(int argc, const char *argv[]){
NSAutoreleasePool* pool = [[NSAutoreleasePool alloc] init];


[pool release];

return 0;
}
みたいなのをコンパイルして実行すると、CFStringとかCFNumberなどのCF~のメモリが解放されていないようなんですけどこれはなんなんでしょうか?
617 Name: 名称未設定 [sage] Date: 03/06/20 00:25 ID: hPWAptZ1 Be:
>>616
>これはなんなんでしょうか?
どうやって検証したの?
認識が違っているかもしれないし、方法がわからないと誰にもわからない。
618 Name: 名称未設定 [] Date: 03/06/20 00:30 ID: hPWAptZ1 Be:
ageついでに、
Cocoa.Frameworkってメモリーリークしているのかしていないのか
わからない所がある。
MallocDebug.appでみると、リークしまくりのようだが。
619 Name: 名称未設定 [sage] Date: 03/06/20 00:35 ID: fU/oS9Tv Be:
>>617
すいませんでした。
gcc main.m -framework Cocoa
とコンパイルしたものを
ObjectAlloc上で実行してみたところCurrentの所が0になっていないものが
たくさんあったんです。
620 Name: 名称未設定 [sage] Date: 03/06/20 00:44 ID: hPWAptZ1 Be:
>>619
>ObjectAlloc
でわかるの???リークが!
621 Name: 名称未設定 [sage] Date: 03/06/20 00:47 ID: fU/oS9Tv Be:
あれっわかんないんですか?何か根本的に間違ってますか?
622 Name: 名称未設定 [sage] Date: 03/06/20 01:33 ID: hPWAptZ1 Be:
>>621
main(){
char* p=malloc(10);
free(p);
return 0;
}
でfree()があるときとないとき比べても
システム内で使われたかどうか知らないが、
消えてないオブジェクトがある。
623 Name: 名称未設定 [] Date: 03/06/20 01:47 ID: uQVPRV9+ Be:
Cocoa-JavaでServerSocketがうまく動かずに悩んでいます。
Threadを継承したクラスのrunメソッド内で、ServerSocketをnew、acceptしてSocketを取得できません。
tryでくくっているのですがExceptionはスローされず、servSock.accept()で止まっているようです。

ServerSocket servSock = new ServerSocket(listenerPort);
NSSystem.log("port=" + servSock.getLocalPort()); // ここまでは動いています
Socket sock = servSock.accept(); // ここから先の処理に進みません
NSSystem.log("remoteSockAddr=" + sock.getRemoteSocketAddress());

このacceptで止まった状態でアクセスすると
java.lang.NoSuchMethodError
at ServerThread.run(ServerThread.java:46)
上記のエラーが出ます。何かこの問題の原因がわかる方おられましたら助言よろしくお願いします。
原因をさぐるべくPureJavaで書いてみましたが同様の症状でした。
624 Name: 623 [] Date: 03/06/20 01:55 ID: uQVPRV9+ Be:
追記です。
SHOEISHAのJavaゲームプログラミングを参考にしています。
(この本は推奨されないメソッドを使っている箇所がたくさんあるので気をつけてコーディングしています)
ポートは2357を使用しています。他のポートも試しましたが症状は変わりませんでした。
テスト段階で一回うまくいったような感じだったのですが
ポートを閉じる処理を忘れてからうまく動作しなくなったような感じがします。
記憶があいまいなので、もしかしたらうまく動いていたのは勘違いだったかもしれません。

この問題の解決が難しそうであればObj-Cで書き直すつもりでいますが
不馴れなためできればJavaで開発したいと思っています。
何卒よろしくお願い致します。
625 Name: 名称未設定 [sage] Date: 03/06/20 03:29 ID: dn2gRYcx Be:
>>616
それは多分、もともと解放されないオブジェクトだと思うのだが。
@"string"とかは解放されないNSStringのインスタンスでしょ?

>>623
たしかaccept()はそこで止まってアクセスを待つでしょ。
タイムアウトを設定すれば、時間切れで例外吐くようになるんじゃない?

626 Name: 623 [] Date: 03/06/20 03:40 ID: uQVPRV9+ Be:
>>625
うおおレスありがとうございます!
んー、なるほど。たしかに止まってアクセスを待ってるような感じもします。
なんでNoSuchMethodErrorが出てるのかもうちっと調べてみます。
627 Name: 名称未設定 [sage] Date: 03/06/20 12:15 ID: KydAHKyT Be:
>616
CFStringなどはCFReleaseで解放しなければならない
ということではなくて?

>618
リークは0にはならないね。
俺は10KBくらいにおさまれば良しとしてる。
OSのバージョンが上がれば改善されるみたいだし。
10.1ではNSURLHandleとかリークしまくりだったけど
10.2になったら直ったよ。
628 Name: 616 [sage] Date: 03/06/20 13:50 ID: VIGfGwZO Be:
ご返事ありがとうございます。
>>627
自分で生成した覚えのないものなので一体なにを解放すればいいのかわらないんです。覚えがないのならば気にしなければいいのかもしれませんが...
>>625
というのはシステムが勝手に生成して解放しないオブジェクトがあるということでしょうか?

やはりObjectAllocを使って調べようとしているのが間違いなのかな。
629 Name: 名称未設定 [sage] Date: 03/06/20 16:42 ID: UunQc/xh Be:
>628
CFStringはNSStringの内部で使われてたりします。
NSStringのリリースし忘れでは?

確認ですが、NSAutoreleasePoolは、Javaのガベコレと同等物ではないことはご存知ですよね?
autoreleaseメッセージをオブジェクトに投げると、カレントプールに登録され、
カレントプールがリリースされるときに登録されたオブジェクトに対しreleaseメッセージを投げるだけです。
ですから、カレントループが解放されるときにretainCountが1でない場合、
retainCountが1減るだけで解放はされません。


> やはりObjectAllocを使って調べようとしているのが間違いなのかな。
普通の人はMallocDebugを使います。
630 Name: 616 [sage] Date: 03/06/20 17:56 ID: OVVUvMlC Be:
>>629
上に書いたようにNSAutoreleasePool以外に特にオブジェクトを生成していません。main()の中身はあっても無くても変化はありませんでした。
一応retainCountのことは理解しているつもりです。

MallocDebugはウィンドウアプリケーション(?)しか使えないのではないでしょうか?少なくともgcc main.m -framework Cocoaとしてできたa.outは選択できませんでした。
631 Name: 名称未設定 [] Date: 03/06/20 18:20 ID: LblzhyXN Be:
Qt/MacのGPLバージョンがでるらしいです

http://www.trolltech.com/
632 Name: 名称未設定 [sage] Date: 03/06/20 18:35 ID: hPWAptZ1 Be:
>>630
>MallocDebugは
ループがないと動かない。

main()
{
....something code
while(1);
}

普通のアプリはイベントループがある。

MallocDebugではポインタの上書きしか検出されない、と思う。
ObjectAllocで見れる参照カウントがあるなら、Win32のデバッグ環境
のようにCheckPoint設定してダンプする関数があってもいいのにな。
ライブラリ自体がリークに関してあやしいのか。
633 Name: 625 [sage] Date: 03/06/20 19:30 ID: dn2gRYcx Be:
>>628
そういうこと。
例えばNSString *のなんとかNotificationとかがAppKitにはいっぱい定義されてたりするでしょ。
それらはNSStringのインスタンスとして扱えるけど、自分で生成する必要もないし、解放もしない。

それにClassオブジェクトだって解放されないでしょ。
たしか現時点ではBundleはロードできてもアンロードできないんじゃなかったっけ。
つまり実質的にはリークしてるってことだ。どうせページアウトされるし。
634 Name: 名称未設定 [] Date: 03/06/22 18:45 ID: g7Z4HPlh Be:
あの、現在テキストエディタらしきものを作っているのですが、分からない
点が有ります。だれか教えて下さい。

分からないのは『タブの長さの設定が可能なのかどうか?』ということのなの
ですが、現在は手動で \t(タブ)を任意個のスペースで置き換えるようにして
います。現在うまく動作していますがこの為だけのコードが出てきてしまい、
体によくありません。

1、ファイル読み込み時にタブをスペースで置き換え
2、タブ入力時にスペースに置き換え
3、保存時に必要な箇所をタブに直す

というふうになりますが出来ればフレームワーク側でできないかな?
と思いまして。。。
635 Name: 名称未設定 [sage] Date: 03/06/23 01:12 ID: 3C938+Do Be:
Cocoaはやっぱり!を読んで最近はじめた初心者ですが(Cとかはそれなりに)
ftpなどの対話的なインターフェイスを持つコマンドを、Aquaから
グラフィカルにそうさしつつ、ターミナルは開かないというような動作は
実現できますか?

Aquawget(だったかな)みたいなのを見てると、出来そうな気もするんですけど…

それと、Cocoa初級者むけのメーリングリストとかありましたら(ちゃんと生きてる奴)
教えてもらえると助かります。
636 Name: 名称未設定 [] Date: 03/06/23 01:57 ID: P12MKax6 Be:
>>634
NSMutableParagraphStyleを用意して、NSTextTabをNSArrayに入れてsetTabStops:でセットする。
んでこのNSMutableParagraphStyleをNSTextStorageとかNSMutableAttributedStringにセットする。
たぶんこの方法でよいと思われる。

Attributeの名前とかはリファレンスのNSAttributedString Additionsとかに書いてあるのでそれを参考に。あとはパフォーマンスとかの問題があるかもしれないので色々実験してみて。

>>635
NSTaskで対話的なものもたぶんできると思う。NSTaskはプロセスを実行して、NSNotificationとかで読み込みを受け取ったりするので、そこらへんを調べてみては。
あとユーザーの入力はstandardInputで与えることになると思うので、NSPipeとかNSFileHandleを使用する。
そして扱うデータによってはNSDataとNSStringの変換とかでエンコーディングの知識が必要になるカモ。あと、文字列を解析する場合はNSScannerが便利。
NSTaskでできなければforkとか使うのかな?
637 Name: 634 [sage] Date: 03/06/23 03:53 ID: CnYhIbCR Be:
>>636
レスありがとうございます。
636の方法で方新は見えてきたのですが、NSTextTabの意味が
よく分かりません。今は時間がないのでテストできないのですが
後日調べてみます(よろしければおしえていただけないでしょうか?)。

面白くなりそうです!
638 Name: 616 [sage] Date: 03/06/23 19:42 ID: a2k9m2bi Be:
>>633
遅くなりましたがどうもありがとうございました。
objective-cだけの時には気にならなかったのですが、cと混ざったものを
書いているときになにか自分で解放し忘れてるものがあるのではと
思ったのでした。
639 Name: 名称未設定 [sage] Date: 03/06/24 01:58 ID: x7GZiE7h Be:
なんか昨日から、特定の?文を入れてリターンを押すと
オートインデントが利かないばかりか、tabを押してもタブが入らず、
何度も挑戦しているとかならずProjectBuilderが落ちるようになってしまって
ションボリックリンクなんだけど、これはもうDeveloper toolsの再インストールしかない?

といったところで、インストーラのパッケージを探してみたら、
なんかいつの間にかハードディスクの中から消えてる??
MDD867なんですが、インストーラはどこにあったか教えてもらえませんか?
640 Name: 名称未設定 [sage] Date: 03/06/24 13:57 ID: sZOxojhs Be:
>>639
とりあえずADCOnlineにでもなって(もしなってなかったらね)Dec2002と昨日でたDec2002用gcc3.3パッチとセットでDLしたら?

てかその前にpreferencesあたり疑ってみたりインデント外すなりしてみるとか。
Xcodeになってもインデントバグがあったりするとかなり鬱になりそうだけど(汗
641 Name: 名称未設定 [sage] Date: 03/06/24 19:27 ID: Z3Jcgek/ Be:
すみません。CocoaJavaのNSImageについて質問なのですが
dissolveToPoint(NSPoint aPoint, float delta)ではOSXに付属のスクリーンセーバのような
なめらかな位置の移動はできないのでしょうか?
NSPointの各座標の値を1.234みたいな値にしても結果は1Pixelずつの移動でした。
なんか根本的な勘違いをしてますでしょうか?
642 Name: 名称未設定 [sage] Date: 03/06/24 21:19 ID: x7GZiE7h Be:
>>640
ウワァァン、最新版入れてもplist消してもやっぱりインデント設定を入れると落ちるよう
しょうがないからオートインデントなしで書くか…これじゃmiとあんましかわらんね

何が悪いのか皆目見当が付かないところもションボーリ
643 Name: 名称未設定 [sage] Date: 03/06/24 21:51 ID: x7GZiE7h Be:
あと、ついでに質問なんだけど…

オートインデントを切ったら、tabがスペースに変換されてインデントされるのは
これはどうしようもないことなんですか?
回避方法(tabをtabとして記録する)があれば教えてほしいのですが…

環境設定の「エディタでタブを使う」とか項目をいじってみてもどこが変わったのか
よく分かんないし…助けてくだされ
644 Name: 名称未設定 [sage] Date: 03/06/25 00:09 ID: eB6ceTrH Be:
>>643
うちはむしろスペースがtabに変わるなぁ。いったいどこの設定だろ
645 Name: 644 [sage] Date: 03/06/25 00:39 ID: eB6ceTrH Be:
>>643
「エディタでタブを使う」の設定はプロジェクトの個々のファイルごと
にも設定されてるようだ。cmd+iで情報パレット出してチェック入れれば
ちゃんとtabが入るよ。
646 Name: 名称未設定 [sage] Date: 03/06/25 01:02 ID: HvJolIf0 Be:
>>645
ホントだ!
情報㌧クスコ!
647 Name: 641 [sage] Date: 03/06/25 03:28 ID: lsrrhXEh Be:
自己解決しました。
drawAtPoint,drawInRectを使用することでうまくいきました。
よくドキュメントを読んでから質問します、、、板汚しスマソ。
648 Name: 641 [] Date: 03/06/25 15:12 ID: lsrrhXEh Be:
現在勉強のためCocoaJavaで全画面表示のスライドショーを作っているのですが
OSXに標準のスクリーンセーバに比べて描画速度が遅くて困っています。
NSViewを継承、RunnableをimplementsしたClassを作成して
run()内の無限ループでdisplay()、sleep()を繰り返し処理をしています。
(具体的な描画処理はdisplay()の中で行っています。)
drawInRectの描画面積が広く、クロスフェードで透明度をつけるととても遅いです。
スリープを0にしても遅くてなめらかな動きになりません。
OSXのスクリーンセーバはとてもなめらかに動いてるので
何とか対処できるのではないかと思うのですが解決策が全くわかりません。
やはり全画面描画をするときはObj-cでNSOpenGLViewを使わなければならないのでしょうか?
全画面描画について何かアドバイスよろしくお願い致します。
649 Name: 名称未設定 [sage] Date: 03/06/27 17:27 ID: XaJJBML+ Be:
練習で、NSTask から呼び出したコマンド(ls)の出力を、
ウィンドウに配置した NSTableView に表示するものを作ろうと思ったんですけど、
NSTableView にデータを表示させるにはどういう手順が必要なのかいまいち分かりません。

・NSTableDataSource を NSTableView のデータソースとして指定する
・おそらく tableView:setObjectValue:forTableColumun:row: でデータを書き込む

と言うところまでは分かるんですけど…
あれ、"(NSTableView *) tableView" がパラメータとして指定されてるということは
setDataSourceは必要ないということ?

ls の出力結果ということで、改行で区切られた文字列がダラダラと帰ってくるわけですけど、
これを配列に変換したものを、一気に書き込むなんてことはできるんでしょうか?
650 Name: 名称未設定 [sage] Date: 03/06/27 17:46 ID: QrYouNyJ Be:
>>649
NSTableView の DataSource に必要なのは
-(int)numberOfRowsInTableView:(NSTableView *)aTableView;
-(id)tableView:(NSTableView *)aTableView objectValueForTableColumn:(NSTableColumn *)aTableColumn row:(int)rowIndex;
この使い方は
http://homepage.mac.com/mkino2/cocoaProg/AppKit/NSTableView/NSTableView.html#setValue
このあたりを参照。

あとは、文字列を配列に変換するのに
-(NSArray *)componentsSeparatedByString:(NSString *)separator;
を使ったりすると吉。
651 Name: 名称未設定 [sage] Date: 03/06/27 19:29 ID: OI+yaa6v Be:
NSMutableDictionaryとNSMutableArrayで階層構造を作っているデータがあるんですが、
全データを丸ごとコピーして新しい辞書を作るにはどうすれば良いでしょうか。
dictionaryWithDictionary:では頂上しかコピーされないし、
再帰でごりごりとコピーするしかないんでしょうか?
あ、ファイルに書き出す、は無しでお願いします(ファイルに書き出せないデータを含むので)
652 Name: 名称未設定 [sage] Date: 03/06/27 22:53 ID: XaJJBML+ Be:
>>650
うーん、この説明を読んでもさっぱりです…

たとえば myObject にアウトレットを作って、
tableView, tableColumn というアウトレットをそれぞれ
NSTableView, NSTableColumnに接続しますよね、
それでボタンをひとつ用意してそれに対してアクション run: を接続して、
その run: の中でテーブルにデータを入れたいと思ったら、
どのような操作が必要なんでしょうか?
653 Name: 名称未設定 [sage] Date: 03/06/27 23:27 ID: 9xWR5cni Be:
>>652
ちょっと勘違いしているようで。
CocoaではオブジェクトがNSTableViewにデータを送って、表示するような方法は取ってないよ。
NSTableViewのほうから、「ここのカラムの何番目に表示するのは何よ?」って聞いてくるから、
オブジェクトは「表示するのは@"hoge"」とか返せば、その文字列が表示するって仕組み。
654 Name: 名称未設定 [sage] Date: 03/06/27 23:52 ID: XaJJBML+ Be:
>>653
むむむ。そうすると、

NSTableView「行数はいくつなの?」 (numberOfRowsInTableView)
オブジェクト「5つだよ」(↑の戻り値)
NSTableView「じゃあじゃあ! hogeの3行目はなに?」(tableView:objectValueForTableColumn:row)
オブジェクト「hogehogeだよ」(↑の戻り値)

って感じですか?
なるほどそうなると、なぜオーバーライドするのかとか
なぜそのメソッドを使うのかとかが分かってきたような気が。
655 Name: 名称未設定 [] Date: 03/06/28 21:48 ID: zr+eaerB Be:
>654
マルチポスト
警告1
656 Name: 名称未設定 [sage] Date: 03/06/28 22:17 ID: qafMDcD4 Be:
>>651
ファイルに書き出す一歩手前でコピーすれば良いんじゃないの。
NSCodingで一旦シリアライズしてしまうとか。
657 Name: 名称未設定 [sage] Date: 03/06/29 02:11 ID: t58EgiAB Be:
>>655
???
658 Name: 名称未設定 [sage] Date: 03/06/29 02:20 ID: KT4lXhEQ Be:
macosx-dev-jp にマルチポストしてないか?ってことでは。
659 Name: 名称未設定 [sage] Date: 03/06/29 02:33 ID: t58EgiAB Be:
しょうもな。
660 Name: 651 [sage] Date: 03/06/29 21:53 ID: LocSjlbl Be:
>656
ファイルに書き出す前の処理です。
NSCodingに対応していないオブジェクトを含んでいてそれをデータから排除したいわけです。
でもメインのデータをいじっちゃうとその後の動作に問題が起きるので、
丸ごと複製してそっちをいじってやろう、というわけで。
設計上の問題といわれればそれまでですが。
661 Name: 名称未設定 [] Date: 03/06/29 22:58 ID: lHyYE8i9 Be:
>>655
この人可哀想…。
662 Name: 名称未設定 [sage] Date: 03/06/29 23:57 ID: V4o6OgIx Be:
>661
同情するなら金をくれ
663 Name: 名称未設定 [] Date: 03/06/30 00:53 ID: k8jHSRl5 Be:
>>651
カテゴリを使っちゃうのはどうか。(ObjCだよね?)

@implementation NSObject (RecursiveCopy)
- (id)recursiveCopy {
  return [[self copy] autorelease];
}
@end

@implementation NSArray (RecursiveCopy)
- (id)recursiveCopy {
  NSEnumerator *enumerator = [self objectEnumerator];
  NSMutableArray *copy = [NSMutableArray array];
  id obj;
  while (obj = [enumerator nextObject]) {
    [obj addObject:[obj recursiveCopy]];
  }
  return obj;
}
@end

@implementation NSDictionary (RecursiveCopy)
以下略

こんな感じで。
でもこれってコピー用の再帰的な関数書くのとあんまり変わらんかもね。
あとinitWithDictionary:copyItems:ってのもあるけど。

664 Name: 名称未設定 [sage] Date: 03/06/30 19:48 ID: FjvaEaIC Be:
>663
レスサンクスです。

>でもこれってコピー用の再帰的な関数書くのとあんまり変わらんかもね。
こっちの方が再利用がきいてよりオブジェクト指向っぽいですね。
勉強にもなるしちょっとやってみます。
665 Name: 名称未設定 [sage] Date: 03/06/30 22:05 ID: zRsGWYSY Be:
Objective-Cの質問です。
あるクラス(モデル)のメソッドで、文字列を引数として受け取り、
処理の結果を文字列として返す関数を作ろうと思うんですけど、
この場合、関数の定義はどうするのが一般的に正しいですか?
このメソッドは常に外部のクラス(コントローラ)から呼ばれることが前提です。

- (NSString)hogehoge: (NSString)aString
{
(略)
return aString;
}
のようにすればいいのかな。

オブジェクト指向言語でのプログラミングはほとんど始めてなので
クラスを引数にする時はどうすればいいのかイマイチ分かってないんですけど。
return aString とやると、ポインタか実体かどっちが帰ってくるんですかね。
666 Name: 名称未設定 [sage] Date: 03/06/30 22:39 ID: W5NghL+q Be:
普通は
-(NSString*)hogehoge:(NSString*)aString
じゃないかと思うが。
667 Name: 名称未設定 [sage] Date: 03/06/30 22:53 ID: mf6N3Mj6 Be:
ポインタじゃないの
668 Name: 名称未設定 [sage] Date: 03/07/01 01:02 ID: 5epRmT+B Be:
>>666-667
ありがとー
その後、stringWithString とかの定義を見てたら何となく分かってきたよ

といったところでもうひとつ質問が…。
アホな質問ばかりでごめん…

クラスAとクラスBがあったとして、クラスBの中のメソッドXが、
(メソッドX内で作った)NSArrayのポインタを返すとします。
これをクラスAの中から呼び出す時は、
NSArray *hoge = [ classB methodX ];
とやるのか、それとも
NSArray *hoge = [ NSArray arrayWithArray: [ classB methodX ] ];
とやるのか、どっちなんでしょう?
もしメソッドXが返すインスタンスがそのまま解放されないとしたら、
クラスA側でわざわざ別のインスタンスを作るのは無駄なように思えるし…
669 Name: 名称未設定 [sage] Date: 03/07/01 01:09 ID: o6aV7lpL Be:
前者が正解だとは思うが。
>>668 は荻原本あたりで文法を学んだ方が良いかもしれない。
670 Name: 名称未設定 [sage] Date: 03/07/01 01:40 ID: 5epRmT+B Be:
>>669
ということは、まったく別のクラスの内部にあるメソッド内でインスタンス化された
ローカルオブジェクトが、解放されないまま別のクラスから参照できる、って事?
どこで宣言、インスタンス化されたオブジェクトであっても、それ自体をrelease
しない限りはメモリ上に残り続けるってことで合ってますか?

そして、たとえばクラスBのインスタンス自体が解放された場合、その中の
メソッドXでインスタンス化されたオブジェクトは解放されずに残るのか、
それとも一緒に消えるのか、どっちなんでしょ?(もちろんautoreleaseしてない場合)

萩原本は購入予定には入ってるけど資金不足でしばらく無理…
671 Name: 644 [sage] Date: 03/07/01 02:14 ID: a7lEmA6e Be:
>>670
ほったらかしてれば残ります
672 Name: 名称未設定 [sage] Date: 03/07/01 02:20 ID: o6aV7lpL Be:
クラスBのインスタンスが解放されても
その中のメソッドXでインスタンス化されたオブジェクトは解放されずにメモリ上に残る。

クラスBが解放されてしまっているので、
たとえオブジェクトがメモリ上に残っていたとしてもアクセスできず、
メモリリークということになってしまうが。
673 Name: 名称未設定 [sage] Date: 03/07/01 02:27 ID: o6aV7lpL Be:
これらの違いが分かれば後は適当で良いような気もする。

@implementation B

-(NSArray*)hoge1{
NSArray *array=[[NSArray alloc] initWithObjects:@"a",nil];
return array;
}

-(NSArray*)hoge2{
NSArray *array=[[NSArray alloc] initWithObjects:@"a",nil];
[array release];
return array;
}

-(NSArray*)hoge3{
NSArray *array=[[[NSArray alloc] initWithObjects:@"a",nil] autorelease];
return array;
}

@end
674 Name: 名称未設定 [sage] Date: 03/07/01 12:05 ID: 5epRmT+B Be:
>>673
それぞれの違いはだいたい分かる…はず。
autoreleaseは同じイベント処理内(もしくはarpが作られてから破棄されるまで)
はずっと保持されるってことでいいんですよね。
それに対して何も無しはずっと解放しない。
releaseがあるものはその場で解放されるのでnilが返される。

で、合ってますか?

あともうひとつだけ!質問ばっかりですいません
componentsSeparatedByStringを使って、改行で分けた文字列を作るには、
セパレータを 「@"\n"」 ってやるのは間違ってますか?
675 Name: 名称未設定 [sage] Date: 03/07/01 16:35 ID: T0L0lxsW Be:
ドラッグアンドドロップについて行き詰まってます。。。
NSViewにドラッグアンドドロップするのは出来たのですが、
NSCellにドラッグアンドドロップをしようとして、はたと立ち止まってしまいました。
NSView上にNSCellを複数配置してあって、それらの一つにFinderから
アイテムをドロップしたいのですが、どのように処理すれば良いのでしょうか?
676 Name: 名称未設定 [sage] Date: 03/07/01 16:47 ID: u6msM7eZ Be:
NSDraggingInfoのdraggingLocationメソッドでどこにdropされたか調べればよいのでは
677 Name: 名称未設定 [sage] Date: 03/07/01 16:57 ID: DHrx7bSe Be:
>>674
間違ってない。っていうか、プロジェクトを作って実験すればいいだけの話じゃん。
678 Name: 名称未設定 [sage] Date: 03/07/01 17:01 ID: BmU2/ZsX Be:
>>675
どのように処理すれば、の意味がよく分からん。
NSCellをオーバーライドすれば?
679 Name: 名称未設定 [sage] Date: 03/07/01 17:14 ID: T0L0lxsW Be:
わかりにくくてすいません。
NSViewにドラッグアンドドロップする時はNSViewのinitWithFrame中で
registerForDraggedTypes:メソッドを呼び、PboardTypeを登録しました。
その上で
(unsigned int)draggingEntered: (id) sender;
-(unsigned int)draggingUpdated: (id) sender;
-(void)draggingExited: (id) sender;
-(BOOL)prepareForDragOperation: (id) sender;
-(BOOL)performDragOperation: (id) sender;
-(void)concludeDragOperation: (id) sender;
を実装してドラッグアンドドロップできました。

こんどはそのView上に乗っているNSCellに対してもドロップ処理をしたいのです。
例えると、NSViewがFinderのウィンドウで、NSCellがファイルのアイコンです。
NSCellはマウスでつかんで移動できるようにしてあるので、NSViewにドラッグアンドドロップを
実装した時のように、NSCellに対しても上記のメソッド群を実装してやれば
OKかな、と思ったのですが、NSCellにはregisterForDraggedTypes:がありません。
それで、どうすればよいのかな分からなくなったのです。

長文すいません。
680 Name: 名称未設定 [sage] Date: 03/07/01 17:18 ID: fZaKdqpP Be:
>674
> releaseがあるものはその場で解放されるのでnilが返される。
これ違う。
勝手にniになってくれるわけない。
681 Name: 名称未設定 [sage] Date: 03/07/01 19:02 ID: o6aV7lpL Be:
>>674
後半
NSString *LF=[NSString stringWithCString:"\n"];
NSAttay *array=[hoge componentsSeparatedByString:LF];
みたいにするとか。
もっと良い方法があるかもしれない。
682 Name: 677 [sage] Date: 03/07/01 19:53 ID: DHrx7bSe Be:
>>681
あれ、@"\n"じゃ問題あり?
汗。
683 Name: 名称未設定 [sage] Date: 03/07/01 19:58 ID: o6aV7lpL Be:
@"\n" だと \n という文字列になってしまうし。

あと、>>682
×NSAttay
○NSArray
684 Name: 名称未設定 [sage] Date: 03/07/01 19:59 ID: o6aV7lpL Be:
ごめん、>>682 じゃなくて >>681
685 Name: 名称未設定 [sage] Date: 03/07/01 20:13 ID: o6aV7lpL Be:
そういえば、HMDT 本の概要が明らかになってますねぇ。
http://homepage.mac.com/mkino2/books/hmdt.html

Cocoa はやっぱり!や荻原本やヒレガス本などの
先行本の良いところを拾った感じになりそう。
686 Name: 678 [sage] Date: 03/07/01 20:29 ID: 051k1IPs Be:
>>679
そっか、NSCellはNSViewのサブクラスじゃないもんね。
何も考えず適当なレスしてスマソ。
ちょっと調べてみます。
687 Name: 名称未設定 [sage] Date: 03/07/01 20:33 ID: 5epRmT+B Be:
実験してみたら @"\n" でいけたよ
どうも他の部分でバスエラってるモヨリ
688 Name: 名称未設定 [sage] Date: 03/07/01 21:14 ID: o6aV7lpL Be:
試してみたら、@"\n" でいけますねぇ。
以前、同じ問題で悩んだ時には @"\n" で失敗したので、
>>681 の方法を使ってたんだけど。
689 Name: 名称未設定 [sage] Date: 03/07/01 21:37 ID: 5epRmT+B Be:
ついでだからもひとつ…

同じクラス内の全てのメソッドが使える配列を作ろうとしたんですけど

@implementation Hoge
NSArray *aArray = [ NSArray array ];
- (IBAction)run:(id)sender.......

って感じにしてみたら、initializer elemant is not constant
って怒られてしまう。
メソッド内で同じものを宣言すると問題なく通るのだけど
何か基本的な間違いをしてますか?

それと、今作ってる練習用のプロジェクト(簡単なやつ)が
意味不明の場所でエラーを起こして落ちてしまうんですけど
どこかに上げたら誰か見てもらえませんか?
デバッガでトレースしてみてもやっぱり意味不明のところで落ちてるような。
690 Name: 名称未設定 [sage] Date: 03/07/01 21:58 ID: T0L0lxsW Be:
>>678
そうなんですよ。
私もNSCellがNSViewのサブクラスだったらいいなぁと思ってたんですが。。。
解決したら書き込みます。
もうちょっとドキュメントあさって見ます。
691 Name: 名称未設定 [sage] Date: 03/07/01 22:07 ID: HPfpM43k Be:
>>689
インスタンス変数でいいと思います。
@interface Hoge : NSObject {
NSArray* aArray;
}
...
そもそも変更不可の空Array作っても仕方がないのでは。。
こういうときはNSMutableArrayを使います。
692 Name: 名称未設定 [sage] Date: 03/07/01 22:35 ID: u6msM7eZ Be:
>690
NSViewはNSCellの座標を知ってるんだよね。
じゃないとマウスでつかんで移動とかできそうにないし。
だったら、NSViewから適当なNSCellに振り分けすればいいのでは?
NSViewの方にcellAtPoint:を実装、NSView・NSCell両方にNSDraggingDestinationの
メソッドを実装する。
たとえば、NSViewの方のprepareForDragOperation:はこんな感じかな。
- (BOOL)prepareForDragOperation:(id <NSDraggingInfo>)sender
{
NSPoint point = [sender draggingLocation];
NSCell *cell = [self cellAtPoint:point];
return [cell prepareForDragOperation:sender];
}
NSViewの方でregisterForDraggedTypes:を呼んでおけば、上のコードが呼ばれて
目的のcellのprepareForDragOperation:を呼ぶことができる。
693 Name: 名称未設定 [sage] Date: 03/07/01 23:12 ID: 5epRmT+B Be:
>>691
あやや、失礼しますた。書き間違いです。

なんでこんなことがしたいかと言うと、
これ自体がNSTableDataSourceを内包しているので、
スタティック変数(じゃないけど)を参照してセルの内容を返す必要があるんですよ。
んで、あるボタンを押すとその内容が変化するので、その度に毎回NSArrayを
作っているとそのうちメモリが溢れるかなぁと思ったもんで。
694 Name: 名称未設定 [sage] Date: 03/07/01 23:54 ID: 5epRmT+B Be:
ttp://www.kari.to/upload/source/d/0563.sit

ってことでこれがプロジェクトのディレクトリなんですけど。
余裕があったらぜひとも試して添削してみてくださいませませ。
695 Name: 名称未設定 [sage] Date: 03/07/02 01:07 ID: cjlxSf/4 Be:
>>693
ソースまだ見てないけど、そういう場合は、
@interface Hoge : NSObject {
NSArray* dataArray;
}
で、
-(NSArray*)dataArray{
return dataArray;
}
-(void)setDataArray:(NSArray*)inArray{
if(dataArray) [dataArray release];
dataArray=[inArray retain];
}
みたいなアクセッサメソッドを作りそれを介して扱います。
deallocで[dataArray release]すればきっちり片付きます。
696 Name: 名称未設定 [sage] Date: 03/07/02 01:38 ID: 2AiJdzFN Be:
>>695
??
最初のメソッドの意味が分かんないです。
この例のままだと、変なポインタ返しませんか?
もしかしたら役に立つかもしれないので教えてください。

よく考えたらNSMutableArrayを継承して、データソースのメソッドを持つ
専用のクラスを最初からインスタンス化しておくのが無難かもしれない…
697 Name: 名称未設定 [sage] Date: 03/07/02 02:02 ID: +BXvG5zQ Be:
>>594 のソースを見てみた。

・tableData はインスタンス変数にして -(void)awakeFromNib; の中などで初期化すれば良い
・RunTask クラスを nib ファイル内でインスタンス化する意図が不明
・listView の dataSource は nib ファイル内で指定すれば良いのに
・とにかく一回基本書を買って読んだ方が良い
698 Name: 名称未設定 [sage] Date: 03/07/02 09:59 ID: 2AiJdzFN Be:
>>697
アドバイスありがとー
Cocoaはやっぱり!を読んだだけじゃぁナンニモワカンネーヨ!
ってとこですか。ぐふぅ

次のステップとしては、ヒレガス本か入門Cocoaか萩原本かHMDT本が
あると思いますけどどれがいいでしょうかね。
HMDT本はまだ出てないから候補から外すとしても。
699 Name: 名称未設定 [sage] Date: 03/07/02 11:04 ID: vDGdMVpi Be:
入門Cocoaは、他の本に書いてないことがちょこっとだけ載っているので、
ぱらぱらっと立ち読みすることにして、他のを全部買えばいいんじゃない。
どれにしようとか、考えてると結構時間の無駄だし。
700 Name: 名称未設定 [sage] Date: 03/07/02 11:09 ID: 2AiJdzFN Be:
いや、金がないんですよ(萎)
現時点でもっとも実りが多そうな本がいいなぁと…
萩原本かな。
701 Name: 名称未設定 [sage] Date: 03/07/02 13:24 ID: VFUUmN8k Be:
ヒレガスだろ。
聞いてることはほとんど載ってるような・・・。

HMDTは発売後様子を見てから。
702 Name: 名称未設定 [sage] Date: 03/07/02 23:42 ID: 2AiJdzFN Be:
>>701
萩原本立ち読みしてきたらすごく良さげだったんで、やっぱり両方ですかのう
合計で7000円くらいするよ…あふん
703 Name: 名称未設定 [sage] Date: 03/07/03 02:20 ID: WA9nmxUi Be:
たしかに萩原本は役に立つ。ちょっとしたリファレンスとしても重宝。
そこらへんHMDTに期待。テキスト処理なんかが詳しく書いてあるとかないとか。
ちなみに、Learning Cocoa -> 萩原本 -> Cocoaはやっぱり! -> ヒレガス本
-> Cocoa Programming の順で買った。
704 Name: 名称未設定 [sage] Date: 03/07/03 20:26 ID: puvhRaL3 Be:
おこづかいが今、全部で1200円しかないんです。
でも1冊買うとしたら、どの本を買うと良いですか?
705 Name: 名称未設定 [sage] Date: 03/07/03 20:28 ID: rHAQZ22W Be:
かえませんw
706 Name: 名称未設定 [sage] Date: 03/07/04 00:29 ID: 03lNLZCC Be:
おこづかい以外の金がある罠
707 Name: 名称未設定 [sage] Date: 03/07/04 08:00 ID: AxSMkcXN Be:
本当にそうなら図書館いってみい。
割と大きめの図書館なら大体おいてるし、無ければ「ない」と言えば、結構おいてくれる。
うちの近くの図書館もそんな感じで、妙にプログラム系の書籍が多いぞ。
708 Name: 名称未設定 [sage] Date: 03/07/04 10:05 ID: q5MVtSOD Be:
図書館なんて地方地方で事情が全然違う
自慢にもならんが、こっちの図書館には全部ない。
行く度にリクエスト用紙かいてくるが2年間ずっと無視
郷土関係のマイナーな本は山ほど買ってる見たいだけど、いらね
他の図書館から取り寄せてもらっても、貸し出し付加

・・・・・・・・・・・結局全部かいますた
709 Name: 名称未設定 [sage] Date: 03/07/04 13:36 ID: ef+c7Q5Y Be:
この前、LaoxMac管でアーロンの本買ったら、手あかで黒くなってやんの。ムカついたよ。
買う本決まってる時はアマゾンで買うと決心した。
710 Name: 名称未設定 [sage] Date: 03/07/04 14:24 ID: wHC+BELI Be:
>>709
ばかやろう、その本はなあ、みんなにもみくちゃにされながら
おまえに買われるその時をじっと待ち続けていたんだぞ!
711 Name: 名称未設定 [sage] Date: 03/07/04 22:45 ID: +PhI4JgT Be:
Amazonでも結局業者の倉庫から出てくるのできちゃない本はありマッスル。
もちろん書店でもみくちゃにされた本が返本されてたのを、ブックカバー換える前に
再出荷することもよくある。
712 Name: 名称未設定 [] Date: 03/07/05 00:12 ID: zkMtTc1B Be:
Cocoa/Javaでソフトを作っていたら以下のようなメッセージが
でるのですが、これの意味(日本語訳という意味ではなく、どう解釈したら
いいのか)がわかりません。どなたか教えて下さい。

2003-07-05 00:01:30.923 SampleProject[5964] *** _NSAutoreleaseNoPool(): Object 0x1ece520 of class NSCFDictionary autoreleased with no pool in place - just leaking

ちなみにいつ発生するかというと以下のような手順で発生します。
ウィンドウにはNSTextFieldとNSButtonが一つずつあります。

1、ボタンをクリック
2、アクションメソッドでちょっと時間のかかる処理を行う。
3、処理終了
4、この時点でウィンドウに対して何か(例えばフィールドに文字書いたり、
ボタン押したり etc)をすると上記エラーが発生する
713 Name: 名称未設定 [sage] Date: 03/07/05 00:45 ID: CIikpcX/ Be:
>>711
そうなのか。(´・ω・`)ショボーン
714 Name: 名称未設定 [sage] Date: 03/07/05 08:58 ID: RJNeLMy2 Be:
>712
Javaでこれが起こるってことはガベコレのバグかな?

これはObjCでNSAutoreleasePoolと言うクラスのインスタンスがないスレッド上で
autoreleseメッセージを送信したときにでるものです。
まあ、あえてJavaでいえばインスタンス変数にNULLをセットするようなものかな?

最初に書いたようにJavaの場合はガベコレが勝手にやってくれますので意識する必要はまったくないです。

どこかでプロジェクト一式晒してみるか、
Appleに”ガベコレがおかしいぞ!ゴルァ”メールを送るかしないとだめかも。



と思って調べてみたらCocoa/JavaにもNSAutoreleasePoolがあるのね。
いまいち必然性が分からない...

ってことで各スレッドごとにNSAutoreleasePoolのインスタンスを確保してください。
715 Name: 686 [sage] Date: 03/07/05 11:16 ID: gnCL+1ww Be:
>>690
ふと気がついたんだけど・・・
ドラッグ関係のメソッドってNSViewに実装されているわけではなくてNSDraggingDestinationプロトコルのものなんだよね。
(NSObjectで採用されている)
だからNSCellでregisterForDraggedTypes無しでもドラッグを受け入れられるのかも?
716 Name: 712 [sage] Date: 03/07/05 18:40 ID: zkMtTc1B Be:
>>714
レスありがとうございます。
NSAutoreleasePoolについて調べてみたものの解決しません。
NSAutoreleasePoolのドキュメントに以下のような方法で例の
エラーを回避できると書いてありました。

//--------------------------------Cocoa-Javaドキュメントより
int myPool = NSAutoreleasePool.push();

// Your code here

NSAutoreleasePool.pop(myPool);
//--------------------------------ここまで

しかし、これをどこに記述すれば良いのかがわかりません。
今回自分で新しいスレッドは生成していませんし、、、
とりあえずボタンをクリックされた時のアクションメソッドの最初で
push() して、このメソッドの最後でpop()してみましたが、駄目みたいです。
ほかにもいろいろ試してみましたがどれも解決しませんでした。
やはり、なんらかのバグなんでしょうか?(あまり簡単にバグだと思いたくない
んですよね)
717 Name: 名称未設定 [sage] Date: 03/07/06 06:21 ID: bR3cImLu Be:
gcc3.3インストールしても
ProjectBuilder-ターゲット-GCCコンパイラ指定でv3.1とv2.95.2しか選べない・・・
3.3をデフォルトで選ばれてるようにProjectBuilderを設定するにはどうすれば良いでしょうか?

(ふつうにビルドするとヘッダのバージョンについての警告がたくさんでてきて
3.3でビルドになってないっぽい。
ターゲット-詳細設定ビューでCC = /usr/bin/gcc-3.3
CPLUSPLUS = /usr/bin/g++-3.3
GCC_VERSION = 3.x
を追加するとPrefix headerの所で止まってビルドできない。
PREFIX_HEADER=
と、空白にすると
警告も出ず、「ビルドは問題なく完了しました」と表示される。)

718 Name: 名称未設定 [sage] Date: 03/07/06 10:47 ID: hfQBuVMX Be:
>>717
3.3の付属ドキュメント(PDF)に全部書いてある。
719 Name: 名称未設定 [sage] Date: 03/07/07 10:33 ID: 4QoCdxSu Be:
マウスボタンを押していない時のView内のマウス座標が知りたいのですが、
取得できる座標は画面端からの座標だけなのでしょうか?
Viewやwindowはマウスボタンを押した時にしかわからないのでしょうか?

window1枚にNSView,CustomViewの2枚が乗っている状態です。
720 Name: 名称未設定 [sage] Date: 03/07/07 10:34 ID: 4QoCdxSu Be:
もう一個objCの質問なのですが、音を出したいときこれではダメなようなのですが
どうしていいのか良くわかりません。任意のタイミングで効果音を出したいのですが。
a.h
@interface MyO : NSObject
{
NSSound* s;
}
@end
a.m
#import "a.h"
-(void)awakeFromNib
{
s = [NSSound soundNamed:@"Bang"];
}
b.h
@interface MyV : NSView
{
}
-(void)bangDraw(NSPoint *)p;
@end
b.m
#import "b.h"
#import "a.h"
-(void)bangDraw(NSPoint *)p
{
[s play];
}
@end
721 Name: 名称未設定 [sage] Date: 03/07/07 11:03 ID: MtEB9sar Be:
>>720
s = [ NSSound soundNamed:@"Bang" ];
[ s play ];
[ s release ];

を同じメソッド内で処理するようにしよう
722 Name: (´・ω・`)ショボーン [sage] Date: 03/07/07 11:38 ID: 4QoCdxSu Be:
音を鳴らすことが多いので、playだけを別にしたかったのですが。
スミマセン。呼び出し方が解かってません
a.h
@interface MyO : NSObject
{
NSSound* s;
}
-(void)bangSound(int)playSoundNumber;
@end
a.m
#import "a.h"
-(void)bangSound(int)playSoundNumber
{
s = [NSSound soundNamed:@"Bang"];
[ s play ];
[ s release ];
}
b.h
@interface MyV : NSView
{
}
-(void)bangDraw(NSPoint *)p;
@end
b.m
#import "b.h"
#import "a.h"
-(void)bangDraw(NSPoint *)p
{
[bangSound 1 ];
}
@end
723 Name: 名称未設定 [sage] Date: 03/07/07 11:52 ID: MtEB9sar Be:
んじゃ、aとかbとかのサウンドの名前や通し番号を引数で渡すようにしたら
ちょっとは汎用性が高まるけれども。
724 Name: 名称未設定 [sage] Date: 03/07/07 12:18 ID: dgRhmPVS Be:
>>722
MyVからMyOのメソッドを呼び出そうとしている書き方が間違ってます。
その書き方では呼び出せません。
MyVのインスタンス変数に「MyO *myO;」とか保持させてちゃんと代入すれば、
[myO bangSound:1];
と呼び出せます。あるいは、
NSApplicationのdelegateに音を鳴らすメソッド書いておいて
[[NSApp delegate] bangSound:1];
とか。
あと、soundNamed:で作られたインスタンスは(最初からautorelease
されてるので)releaseしたら駄目。
逆に言うと、ずっと保持していたい場合はretainしなきゃ駄目。
725 Name: 名称未設定 [sage] Date: 03/07/07 13:01 ID: Eo2xXSPg Be:
>>722
わざわざMyOにsを持たせずにMyVで作成して保持すれば良いことだと思うが・・・

>>719
グローバル座標からViewの原点を引けば良いんじゃないの?
726 Name: (´・ω・`)ショボーン [sage] Date: 03/07/07 13:25 ID: 4QoCdxSu Be:
+わざわざMyOにsを持たせずにMyVで作成して保持すれば良いことだと思うが・・・ >>Viewが2つあるんです。
+グローバル座標からViewの原点を引けば良いんじゃないの? >>ありがとうございます、調べてみます。
>>724 修正してみました。
a.h
@interface MyO : NSObject
{ NSSound* s; }
-(void)bangSound(int)playSoundNumber;
@end
a.m
#import "a.h"
-(void)bangSound(int)playSoundNumber
{
if (s != nil) {s = [NSSound soundNamed:@"Bang"]; }
[ s play ];
}
-dealloc { [s release]; [super dealloc]; }
b.h
#import "a.h"
@interface MyV : NSView
{ MyO *myO; }
-(void)bangDraw(NSPoint *)p;
@end
b.m
#import "b.h"
-(void)bangDraw(NSPoint *)p
{
if (myO == nil) myO=[MyO alloc];
[myO bangSound:1 ];
}
-dealloc { [myO release]; [super dealloc]; }
@end
あと、delegateも勉強中なので、試してみます。
727 Name: 名称未設定 [sage] Date: 03/07/07 13:31 ID: s9qzJUP5 Be:
>719

> 取得できる座標は画面端からの座標だけなのでしょうか?
NSViewおよびNSWindowに変換メソッドがあります。
NSViewの場合スクリーンからの直接変換は出来ないようなのでいったんwindowメソッドでNSWindowを取ってきてNSWindowの座標に変換後、
convertPoint:fromView:メソッドでNSViewの座標に変換しなければいけません。
NSViewをカテゴライズして変換メソッドを実装してもいいでしょう。


カーソルの変更のような主導権がユーザー側にある場合は
http://developer.apple.com/documentation/Cocoa/Conceptual/BasicEventHandling/Tasks/HandlingMouseTracking.html
この辺。
でも、ファーストレスポンダーしか反応しないような書き方してるね。
728 Name: 名称未設定 [sage] Date: 03/07/07 14:51 ID: dgRhmPVS Be:
>>726
それじゃMyVごとにMyOのインスタンスがそれぞれ作られるんで、
>わざわざMyOにsを持たせずにMyVで作成して保持
するのと一緒。
「MyO→s, MyV, MyV」としたいのだろうが
「MyV→MyO→s, MyV→MyO→s」となっている罠
729 Name: 名称未設定 [sage] Date: 03/07/07 15:22 ID: Eo2xXSPg Be:
>726
>myO=[MyO alloc];
myO=[[MyO alloc] init]; ね

MyOに関しては>728の通り。
Cocoa的には
1.MyOをnib上でインスタンス化
2.MyVにMyOのアウトレットを追加
  IBOutlet id MyO;
3.nib上でMyVのアウトレットにMyOのインスタンスを接続
ってのがスマートかも。
730 Name: (´・ω・`)ショボーン [sage] Date: 03/07/07 18:08 ID: 4QoCdxSu Be:
cocoaはさっぱりなんで、勉強になります。
>>727 ADCのDocument読んでコード書いてます。
>>728 そんな罠が(´・ω・`)
>>729 InterfaceBuilderでCreateInstanceすることにより、
コード側で[[MyO alloc] init]をなくせました。音も鳴ります。(`・ω・´)シャキ
しかし、初回だけ[s play]でファイル読み込み?で1秒ほど固まるようです。(´・ω・`)

a.h a.m >>726とおんなじ
b.h
#import "a.h"
@interface MyV : NSView
{
IBOutlet id myOutlet;
}
-(void)bangDraw(NSPoint *)p;
@end
b.m
#import "b.h"
-(void)bangDraw(NSPoint *)p
{
[myOutlet bangSound:1 ];
}
-(void)myAction(id)sender// なんとなくoutletとセットで作ってしまった。
{//どうやって呼び出すんだろう?
}
@end
詰まったらまた質問に来ます。ヨロシクお願いします。
731 Name: 名称未設定 [sage] Date: 03/07/07 18:26 ID: d1rXyq3Y Be:
>>730
awakeFromNibというメソッドを調べてみると吉
732 Name: (´・ω・`)ショボーン [sage] Date: 03/07/08 16:11 ID: UxS+KAy+ Be:
>>731
初期処理で音データを一度読み込んでおくというふうに理解しましたが?調べてみます。
>>etc
実際のコードにおとす部分でイロイロ詰まってまして、、また来ます。
733 Name: 名称未設定 [sage] Date: 03/07/12 00:15 ID: PMkH8mJ0 Be:
HMDTの本ってオンラインで予約できるサイトないのかな?
出版元のサイトにもトップページのコラム以外に情報のってないし・・・。
734 Name: 名称未設定 [sage] Date: 03/07/12 00:49 ID: wlWAvniy Be:
オンラインでないとダメなの?
735 Name: 名称未設定 [sage] Date: 03/07/12 05:51 ID: L/wAtXpy Be:
今さらCocoa本はいらん。
もうちょっと前なら欲しかったけど、、、
736 Name: 名称未設定 [sage] Date: 03/07/12 10:58 ID: 0loU3R92 Be:
>>735
じゃあ、おすすめの本とか勉強方とかを聞きたかったりして。
737 Name: 名称未設定 [sage] Date: 03/07/12 12:06 ID: 75/jyeLQ Be:
>>733

表紙の画像はあるのにISBNコードも予価も書いてないし。。。
原稿が遅れてるんですかね?
20日に出版できるんだろうか。。

誤植いやだから初版は避けたいところだけど、
どうせMac関連の本だし第二版なんて出るのはいつの事やら。
Webで誤植フォローしてくれればいいんだけどね。
738 Name: 735 [sage] Date: 03/07/12 20:47 ID: L/wAtXpy Be:
>>736
う~ん、お勧めかぁ。
俺が読んだのは『Jaca&Cocoaプログラミングバイブル』だけなんだよ。
あんまりお勧めはしないけど…。
基本的にドキュメント読んで、いろいろ試してれば分かるでしょ。
どの本読んでも内容は一緒に見える。

ただ、Obj-Cの勉強をしたいなら話は別かもね、俺はJava使いだから。
739 Name: 名称未設定 [age] Date: 03/07/13 07:43 ID: Cg6GJpXR Be:
Cocoaはやっぱり!が復活age
http://www.big.or.jp/~crane/cocoa/
740 Name: 名称未設定 [sage] Date: 03/07/13 09:03 ID: jZAR8wd9 Be:
HMDTとの差別化に苦労してるな。
741 Name: 名称未設定 [sage] Date: 03/07/13 12:03 ID: CBeln3F4 Be:
とあるクラスのソース内で、メソッドの中括弧の外で宣言した変数は
同一クラス内から自由に参照できますよね。

とすると、そのヘッダで、
@interface Hoge : NSObject
{
// この部分
}

ここで宣言した変数はどういうことになるんでしょうか?
外から見えるようになるんですか?
742 Name: 名称未設定 [sage] Date: 03/07/14 02:33 ID: g5EsyC6X Be:
>>739
を、ほんとだ。トップからはリンクなさそうだけど(つーかフレームのメニューが固定だから狭い画面なんで見落としてるかもしれんが)。
まだメインの記事は復活したわけじゃないし、740の言う通りHMDTとの差別化に苦労してるっぽいね。

今後どうやってくのかちと様子見(ほれ、PB(そのうちXcode)とIBの使い方はここ見れって言えるサイトに戻るといろいろと楽なんだが)。

#正直blogだけだとゴミ決定だったけど、これで見れるサイトに戻ったな。
743 Name: 名称未設定 [sage] Date: 03/07/14 08:47 ID: p25DKQbX Be:
>>741
1.メソッドの中括弧の外で宣言した変数
Cのスコープが適用されるのでグローバル扱いのハズ

2.@interfaceの中
objective-cには、
@public
@protected
@private
の予約語があります。
デフォルトは@protectedです。

744 Name: 山崎 渉 [(^^)] Date: 03/07/15 10:12 ID: 34L7LbqJ Be:

 __∧_∧_
 |(  ^^ )| <寝るぽ(^^)
 |\⌒⌒⌒\
 \ |⌒⌒⌒~|         山崎渉
   ~ ̄ ̄ ̄ ̄
745 Name: 名称未設定 [] Date: 03/07/15 11:32 ID: C8aJ3Wyw Be:
NSSoundで、曲と効果音を同時に鳴らせますか?
746 Name: 山崎 渉 [(^^)] Date: 03/07/15 14:02 ID: 34L7LbqJ Be:

 __∧_∧_
 |(  ^^ )| <寝るぽ(^^)
 |\⌒⌒⌒\
 \ |⌒⌒⌒~|         山崎渉
   ~ ̄ ̄ ̄ ̄
747 Name: 名称未設定 [] Date: 03/07/15 21:40 ID: 4N+pVtMv Be:
良スレ保守ageぽ
748 Name: 名称未設定 [] Date: 03/07/18 13:03 ID: Z0heQC/5 Be:
発売延期アゲ
749 Name: 名称未設定 [sage] Date: 03/07/22 22:13 ID: DGhQ4uIZ Be:
Cocoa環境で使える、質が良くてそこそこ高速な乱数生成は、どれを使うのがいいかな?
750 Name: 名称未設定 [sage] Date: 03/07/22 23:00 ID: dhxy6CcW Be:
>>749
C言語のsrand( time(NULL) )と、rand()関数使え。
751 Name: 名称未設定 [sage] Date: 03/07/22 23:03 ID: DGhQ4uIZ Be:
>>750
rand()なんて質の悪い関数使えないっす
752 Name: 名称未設定 [sage] Date: 03/07/22 23:22 ID: dhxy6CcW Be:
>>751
あそ。
そこまでの質を求めて何したいのかはわからんが、
MT法を使えばいい。
753 Name: 名称未設定 [sage] Date: 03/07/22 23:29 ID: DGhQ4uIZ Be:
なんで逆ギレされんのかわからん…
754 Name: 名称未設定 [sage] Date: 03/07/22 23:30 ID: dhxy6CcW Be:
いやキレてないわけで・・
755 Name: 名称未設定 [sage] Date: 03/07/23 00:49 ID: mP07ShDE Be:
というか、逆ギレの使い方が間違っているわけで・・
756 Name: 名称未設定 [sage] Date: 03/07/23 21:01 ID: 2jOSxer0 Be:
そもそも、そういう事を議論するスレではなくて・・・
757 Name: 名称未設定 [sage] Date: 03/07/23 22:37 ID: qiSGLmR4 Be:
使用目的または評価方法について書かれていない限り
質がいいかどうかなんて他人に判断しようがない。
だから、一番お手軽なrand()を教えてくれたのに
「質の悪い」なんて言い返した751が悪い。

ちゃんとどの程度の質を求めているか書けばよし
758 Name: 名称未設定 [sage] Date: 03/07/23 23:27 ID: kfucE81s Be:
randを知らんプログラマーなんているのか
759 Name: 名称未設定 [sage] Date: 03/07/23 23:36 ID: RkbW95qi Be:
>>758
居るんじゃない?

というかこの話題もうそろそろやめたほうがいいでしょ。
760 Name: 名称未設定 [sage] Date: 03/07/24 00:02 ID: dwFU6cl6 Be:
http://home.jp.freebsd.org/cgi-bin/showmail/FreeBSD-users-jp/69444
このへんのスレッドが参考になるかも
761 Name: 名称未設定 [sage] Date: 03/07/24 02:09 ID: T/GnQOGB Be:
WebKitSDKが落とせないなー。
762 Name: 名称未設定 [sage] Date: 03/07/24 13:33 ID: OjXku3Nf Be:
Japan以外なら落とせたー。
763 Name: 名称未設定 [sage] Date: 03/07/24 14:41 ID: AQGdguy4 Be:
HappyMacintoshDevelopingTime買ってきたけど、読みにくいな。
C言語をマスターしてるのが前提なのにメモリのアドレスとか、ヘッダ
ファイルとは・・・、とか無駄な説明が多い。1~3章は要らない。
校正も残念ながら不十分で、おかしな日本語や図の貼り忘れとかがある。
説明もあまり適切ではない。読むんなら4章以降でしょう。

ウェブサイトの方は簡潔なのにね。本だとむずかしいのかな?

764 Name: 名称未設定 [sage] Date: 03/07/24 15:09 ID: Ml3EfHSH Be:
読んでないから中身についてはなんとも言えないけど、
むしろ「プログラミングをやったことが無い人にも
読めるように作った」とか書かれていなかったっけ。
765 Name: 名称未設定 [sage] Date: 03/07/24 16:42 ID: AQGdguy4 Be:
>>764
そうなんだけど、多分、そういう人が読んだら3章までで挫折すると
思うよ。それにObjective-Cを使うためにはCがわからなければ無理
だから、全くプログラムを組んだことがない人、ってことはありえない。
Cocoaの初心者という意味だと思う。

1~3章は入れないほうが良かったと俺は思う。
766 Name: 名称未設定 [sage] Date: 03/07/24 17:04 ID: de5d+QNZ Be:
さすがにCの教科書はたくさんあるから、省いてもいいとは思うけど。

第2版は出ないだろうから、ミスはミスのままか……
作者のサイトでエラッタがでればいいか。
767 Name: 名称未設定 [sage] Date: 03/07/24 17:05 ID: 0CpBdAEu Be:
>>763
で肝心のCocoa部分はどうよ?
768 Name: 763 [sage] Date: 03/07/24 17:37 ID: AQGdguy4 Be:
>>767
まだ5章読んでるとこだから何とも言えんが、4章からはOK。
769 Name: 名称未設定 [sage] Date: 03/07/24 20:05 ID: 66kjK9M7 Be:
setDoubleAction: でダブルクリックの際の動作を指定してあるNSTableView に
addTableColumn: で動的に NSTableColumn を追加した場合、
追加した NSTableColumn の部分だけダブルクリックに反応しなくなるという問題で困っています。

恐らく、NSTableColumn を追加する際に何か設定を見落としているのだと思いますが、
それが何なのか分かりません。

この問題について、どなたか解決策をご存じの方はおられないでしょうか。

ちなみに、問題の生じているプロジェクトは以下のようになっています。
http://www.geocities.co.jp/SiliconValley-Bay/5171/tablecolumnsample.dmg.gz
770 Name: 名称未設定 [sage] Date: 03/07/25 13:07 ID: n912CWwJ Be:
>>769
NSTableColumnがeditableということはありませんか?
771 Name: 名称未設定 [sage] Date: 03/07/25 15:20 ID: 4xHRE/Dr Be:
[tableColum setEditable:NO ]
で、入力側にDoubleClickを奪われなくなるなり。
772 Name: 名称未設定 [sage] Date: 03/07/25 19:23 ID: 12KaNJEU Be:
>>770-771
まさにそれが原因でした。
何かに反応するには editable = YES だろうと勝手に理解していたのですが、
どうやら editable の意味を取り違えていたようです。
ありがとうございました。
773 Name: 名称未設定 [sage] Date: 03/07/26 05:54 ID: vF4zZNxI Be:
NSMenuあたりについて質問させて下さい。
今、サンプルでステータスバーのメニューにフォルダを登録して
メニューから任意のファイルやフォルダを開けるように
したいと思っています。

しかし、サブメニューを持つNSMenuItemはアクションを設定しても
実際にはアクションがおこりません。なぜなのでしょうか?

NSMenu rootMenu = new NSMenu();
NSMenuItem item1 = new NSMenuItem("item1", action, "");
NSMenu submenu = new NSMenu();
item1.setSubmenu(submenu);
submenu.addItem("item2", action, "");
submenu.addItem("item3", action, "");

こうするとitem1でアクションが起こりません。
なにか、間違っているのでしょうか?

あと、NSMenuItemの setMenu() と setSubmenu() の違い(意味?)が
よく分かりません。だれかご教授おねがいします。
774 Name: 名称未設定 [sage] Date: 03/07/26 20:57 ID: 78LIaaUj Be:
>>773
通常は MenuItem を選択した場合に action が呼ばれるわけですが、
MenuItem に SubMenu のある場合は、
選択しても何もしないのが正しい挙動なのでは?

あと、NSMenuItem の
setMenu は親メニューを登録する場合に使い、
setSubMenu は子メニューを登録する場合に使うものではないでしょうか。
リファレンスでは setMenu は呼ばないように注意されていると思います。
775 Name: 名称未設定 [age] Date: 03/07/27 05:09 ID: b7ikz8RS Be:
>>773
言いたいことはわかる。

>>774
>選択しても何もしないのが正しい挙動なのでは?

動的作成(というよりオンデマンド)メニューを作りたいからで、
サブメニューからアクション(コールバック)されてメニュー構築
をしたいということでしょう。

Obj-Cで試したことあるけどできないんだよ。
- (void)submenuAction:(id)sender;がコールバックされない。
ドキュメントでは、メニューがオープンされるとき呼ばれるとあるんだが。
たぶん、バグでしょう。分かる人いたら教えて!
他の人たちは、Carbonでやっているはず。
776 Name: 名称未設定 [sage] Date: 03/07/27 12:45 ID: bmJ/CjZk Be:
>>775
submenuAction:は使ったこと無いけど、メニューのオープンならNSMenuのupdateメソッドで拾える。
777 Name: 名称未設定 [sage] Date: 03/07/27 14:44 ID: Sij2p2Pv Be:
>>774-776
返事ありがとうございます。
なるほど、基本的には出来ないのが”仕様”ということですね。

>他の人たちは、Carbonでやっているはず。
そうなんですか、、Snardみたいなことをしたかったんですが、残念です。

でも、出来ない事が分かったので、別の方法を検討してみます。

重ね重ねサンクスです。
778 Name: 名称未設定 [sage] Date: 03/07/28 00:10 ID: pga3ndQw Be:
こういう場合普通、変動がある度にメニューを更新しておいて
プルダウンされる時には既に更新されたメニューにすり変わってるんではないのかな?

まあ、snardを知らないわけだが。
779 Name: 名称未設定 [sage] Date: 03/07/28 00:11 ID: Co98QJ54 Be:
なぁ、macosx-dev-jpってやたらとスルーされる質問が多いと思わないかい?
780 Name: 名称未設定 [sage] Date: 03/07/28 09:37 ID: cyqTWfTH Be:
どんな質問?
スルーされた質問をコピペしてみ、解かることなら答えるよ。

ところで、macosx-dev-jpってどんな雰囲気なんさ?
781 Name: 名称未設定 [sage] Date: 03/07/28 09:54 ID: Co98QJ54 Be:
いや、漏れの質問ってわけでもないけどさ、
答えられるだけの技量を持った人が少ないのかなぁ…
まぁ漏れは答えられないから黙ってるんだけどさ。

雰囲気としては、普通の技術系MLと同じような感じで大人しいですよ。
782 Name: 名称未設定 [sage] Date: 03/07/28 11:23 ID: G+3ASjik Be:
>>778
いや、普通はメニューバーのメニュー項目がクリックされた時に
メニューを再構築するんだと思う。その延長で、サブメニュー
のあるメニュー項目がクリックされた時に、再構築しようって
ことになったのだと推察。

最初にサブメニューも含めて再構築するしかないのではないか?
階層構造深くてそのタイミングで一気に再構築だと時間かかる
のであれば、778の言うようなやり方するか。
783 Name: 名称未設定 [sage] Date: 03/07/28 14:15 ID: ISgAOCz3 Be:
>>782
質問者は単にフォルダ(=サブメニューあり項目)を選んだら
Finderで開きたいだけのような気もする
784 Name: 名称未設定 [sage] Date: 03/07/28 14:34 ID: d3M3OIYK Be:
>>781
雰囲気今は枯れてるのだが、一時期FinderのUIがどーのでフレーム湧きまくりでおおむね逃げちゃったんじゃないかな?>答えるような椰子。

そういう罠はある。ま、MLワチスレで確認してくれ。
785 Name: 名称未設定 [sage] Date: 03/07/28 15:36 ID: Co98QJ54 Be:
>>784
技術系MLって、なぜかどこもそういう話題で荒れたり感情的になったりするよね。
個人への批判やたしなめの文章をML宛に送信したりとか。

実はアホが多いのかな。
786 Name: 名称未設定 [sage] Date: 03/07/28 15:37 ID: IbnNhUdZ Be:
>781
パスワドのことなら、あれ答えるのが難しい。
MacOSX的には「KeyChain使え」何だけどCocoaフレームワークに入ってないから薦めにくいんだよね。
しかも使い方覚えるまでが地獄だし。
かといって「DEC(crypt)使うのが普通」ってのもなんだかなあって思うし。
んでも「MD5ハッシュでもいいよ」って答えるのも違う気がするし。

っていうのを誰かポストしてくれればいいなーなんて夢想してみる。
787 Name: 名称未設定 [sage] Date: 03/07/28 19:03 ID: cyqTWfTH Be:
>786
夢想してないで、そのままMLに投げちゃえば良いべさ。
全員が均一なスキルを前提としたような、クロ-ズドなMLじゃないよね?
質問者の書かなかった行間を(勝手に)補完してみたり、派生する(技術的な)余談を振った方が
面白いと思うんだけど。

答える人を暗に固定していってしまうと、発言できる・できないの閾値が
自分のストレスになるよ。
ストレス溜めておくと、フレームが燃えた時に参加したくなるから(w
788 Name: 名称未設定 [sage] Date: 03/07/28 20:30 ID: 488YHtXW Be:
>>783
正解です。
結局今のところフォルダを表すメニューの子メニューに
『***(フォルダ名)を開く』というメニューを持たせることにしました。
多少操作性が悪くなるけど。。。
789 Name: 名称未設定 [sage] Date: 03/07/28 22:16 ID: xdxxBzdY Be:
>>788
CarbonのChangeMenuItemAttributesで、kMenuItemAttrSubmenuParentChoosableを
指定やればできると思います。
ちょこっとやってみたところ成功しました。
ただ、今やってみたところ、nibファイルで作ったメニューには効くんですが、
プログラムで作成したメニューに対しては効きませんでした。。。なんで?

プログラムで作ったってのは、ステータスメニューアイテムを作成して
その中のメニュー項目にたいしてなんですが、なんで効かないんでしょう。。。
790 Name: 階層途中でのクリック動作はキモイ [sage] Date: 03/07/28 23:36 ID: wGzI07RM Be:

クリックできるメニューとできないメニューの表示区別が無いのに
>サブメニューのあるメニュー項目がクリックされた時
に選択されるというUIは、激しく気持ち悪い。

791 Name: 名称未設定 [sage] Date: 03/07/29 01:30 ID: TGiN7Ls9 Be:
>>789
Carbonなら出来るみたいっすね。
俺、Carbonは全くわからないんすよ。
すいません。
とにかく、情報ありがとうございます。

>>790
そうですか?
いや、そうかもしれないっすね。あんまり考えた事無かったです。
でも、メニュー自体がディレクトリを表すので逆に直感的かな…と。
フォルダのアイコンをメニューにつけたら少しは気持ち悪さが
減りますか?(そういう問題じゃない?)
792 Name: 名称未設定 [sage] Date: 03/07/29 20:24 ID: iLKEvWlm Be:
HMDTの記事を参考にして、Cocoaアプリケーションにホットキーの機能を付けようと思うんですが、
HMDTの記事どおりにやっても、エラーが出てアプリケーションが起動しません。
targetの設定で作成したNSApplicationのサブクラスを主要クラスに設定し、
File's ownerのカスタムクラスも作成したNSApplicationのサブクラスに設定してあります。

エラーの内容に
Creating more than one Application
とあるので、どこかでNSApplicationを複数作成してしまっているようなのですが
コードを見直してもそのような記述はありません。

どなたか解決策をご存じの方はいらっしゃいませんでしょうか?
793 Name: 名称未設定 [sage] Date: 03/07/29 20:55 ID: M6u2i2+d Be:
HMDT の記事を参考にしたのであれば、
HMDT のサイトの BBS で直接聞いた方が早いんじゃないかと思うが。
794 Name: 名称未設定 [なんとなくアゲ] Date: 03/07/30 00:30 ID: dnhhDohr Be:

>>792
「ホットキーを登録する」の記事のことだったら、その記事には
詳しい解説があって、
サンプルソースのプロジェクトまで置いてあるみたいだけど。

動いているコードがちゃんとあって、Macがエラーまで指摘しているのに
これで、まともな質問すらもできない奴の
「解決策」なんて、ひとつしか無いとおもわれ。

795 Name: 名称未設定 [sage] Date: 03/07/30 00:39 ID: aSUw9N+E Be:
"Learning Cocoa with Objective-C 2nd Edition"

初心者向けにイイよー。初版とはまるっきり別の本だ(w
796 Name: 名称未設定 [sage] Date: 03/07/30 05:54 ID: ziA8N7Rf Be:
>>794
もちろん解説も読みましたし、サンプルコードも見ました。
動いてるソースと自分のソースを比べて異なっているのはもちろん
自分のソースにはいろいろと他の処理が入っていることです。
その上で、"Creating more than one Application"というエラーが出るので、
上記のようにどこかでNSApplicationを複数作成してしまっているのでは?と推測しました。
作成したNSApplicationのサブクラスには-initや、+sharedAppliccationといったメソッドも
HMDTの通り、実装してあります。
一応どこかでNSApplicationの+sharedApplicationが呼ばれてしまってるのでは、と思い
カテゴリで自分の作成したNSAplicationのインスタンスを返すように
NSApplicationの+sharedApplicationを上書きしてあります。

自分の書いたコード中で明示的にNSApplicationを作製している箇所はないので
なぜなのか分からない、ということでこちらで質問させていただきました。
確かに長くなるので説明をはしょってあります。上記説明でもはしょってます。
>まともな質問すらもできない奴
で申し訳ない。
>「解決策」なんて、ひとつしか無いとおもわれ。
そう言われちゃしょうがない。

>>793
そうなんですが、こちらの方がいつも利用しているし、返答も早いだろうと思い
こちらに書き込みました。でもおっしゃる通りですね。
今あちらにポストするとマルチになるのでもうしばらく調べてみます。
もし、同じような箇所ではまった方いらっしゃったら情報いただけるとうれしいです。
797 Name: 名称未設定 [sage] Date: 03/07/30 06:52 ID: RJThSSEm Be:
NSApplication のサブクラスの +sharedApplication で
既にインスタンスを作成してある場合は改めて init を呼ばないようにしてあれば、
他の場所でいくら +sharedApplication を呼んだところで
"Creating more than one Application" が出るはずないと思うが。
798 Name: 名称未設定 [sage] Date: 03/07/30 09:26 ID: GPlobAha Be:
>792,796
インスタンス作ってる部分が被ってるだけだと思うが、、、正直質問が掴めん。

>795
推薦文でも書いてくれ
でも、初版と比較するから良くみえるんじゃねえの?


>794 
毒吐いてないで、アドバイスしてやれよ。

でも、
|他人からパクッったコードと自分のコードを混ぜたら動きませんでした。
|おれさまのコードは(漠然と)動いていたので悪くないです。
|何とかしてください。

っていう香具師を思い出したのは確かだけど(w
799 Name: 名称未設定 [sage] Date: 03/07/30 09:35 ID: oDVr8HtE Be:
>792
えーとHMDT見てないので適当に

> targetの設定で作成したNSApplicationのサブクラスを主要クラスに設定し、
> File's ownerのカスタムクラスも作成したNSApplicationのサブクラスに設定してあります。

この場合、

int main(int argc, char* argv[])
{
NSApp = [[AppsSubClass alloc] init];

.......
}

てのが必要だとADCのドキュメントに載ってた気がする。
800 Name: 名称未設定 [たまにはage] Date: 03/07/30 13:04 ID: tAMDdiy2 Be:
オブジェクトの解放に関する質問なんですが・・・
オブジェクトAの中でオブジェクトBを生成します。
オブジェクトBは一定時間待ってオブジェクトAのメソッドAを呼び出して任務終了です。
この場合オブジェクトBの生成時にretainしないでほったらかし
(というか[[[B alloc] init] autorelease])
にして、作業完了したら勝手にいなくなってほしいのですが、
どのようにすれば良いのでしょうか?
メソッドAでreleaseすれば良いわけですが何となくスマートじゃないような気がして。
やっぱ自分で自分をretain,releaseするのは反則なんですよね?
NSTimerなどはどのようになっているのでしょう?

ちなみに「一定時間待って」というのはあくまで例でして、NSTimerを使え、というのは無しでお願いします。
801 Name: 名称未設定 [sage] Date: 03/07/30 15:05 ID: Qx5mIL/y Be:
>>800
質問の意図が全然わからん。

AがBを作成し、
BはAを利用。
Bが作業完了したら、もういらない。
AはBを保持したくない。

ってことだね。Bの作業完了ってのはBのその作業をする
メッセージを呼ぶ奴が誰かいるわけだから、その作業を
要求したやつがリリースすればよいのではないかと思うが。

それと、その間EventLoopから抜けないのであれば、
NSAutoreleasePoolが開放されないから心配いらないし。

どっちにしろ、何がやりたいのかもう少し具体的に説明すれ。
802 Name: 800 [sage] Date: 03/07/30 16:47 ID: 0YSl6FwL Be:
質問が抽象的すぎましたね、すみません。

えーとですね、BはGUIのコントローラです。
Aでボタンを押されるとパネルを表示して、ユーザがボタンを押したらAに連絡します。
ものすごく簡単に言えばアラートを表示してOKを押させるだけのクラスです。
もちろんAの中でやりゃすむ話ですが、いろいろ使いまわししたいので別クラスにしたわけです。
なもんでパネルを表示したらEventLoopから抜けてしまいます。

うーん、やっぱりAが保持すれば良いだけのことですかねえ?
パネルを表示するのを専用のクラスでなくてNSAppでやっているのが不思議だったんですが、
もしかしてそこら辺の事情もあるんでしょうか?
803 Name: 名称未設定 [sage] Date: 03/07/30 21:43 ID: 1TrZUxsX Be:
>>802
用が済んだら勝手に居なくなるという動作で言えば、
autoreleaseしている時点で「いつか勝手に無くなります」。

それはイベント処理の終わり(デフォルト)かもしれないし、
自前で作ったARPを解放した時かもしれないけれど、
とにかくいつかは解放されます。
ということで、希望通りの動作をしていることになります。

もしもう使わないことが決定した時点で解放したいのなら、
autoreleaseを使わずに、[ [ B alloc ] init ]で生成して、
不要になった時点で自分でreleaseする必要があります。
ARPに登録したインスタンスをretainせずにreleaseした場合は
実行時にエラーが出ます。
具体的に言うとARPが解放された時点で、存在しないインスタンスを
解放しようとして怒られます。
804 Name: 名称未設定 [sage] Date: 03/07/31 00:46 ID: 1ZiDg8TA Be:
返事が無いみたいだけど、>>802タンは理解してくれたかなぁ…?

オーナーシップ・ポリシーの考えに従うと、
オブジェクトを生成(alloc)した人(今回はオブジェクトA)が責任を持ってreleaseしないと
いけないことになっています。
だからAが生成したインスタンスBを、Aが解放するのはごく普通のことです。

その手間を省くのが、autoreleaseということです。
805 Name: 名称未設定 [sage] Date: 03/07/31 01:22 ID: t2k0wxQA Be:
>>802

NSDocument と Document Window のような関係の
NSDocument 側を生成&消滅させたいってことですね。

まずPanelはModeless Windowですか?
私の場合は、ControllerをPanelを定義するnibでインスタンス化
させてしまいます。そうすると生成&消滅するタイミングを気に
する必要がありません。この方法の欠点は、生成するだけの役割
のクラスがそのnibのFile's Ownerになってしまうってこと。

あとは、そのパネルの終了時のNotificationをクラスAなりNSApp
なりで受け取って、消滅させる。でもその場合にはそいつがクラス
Bのインスタンスを保持していないとだめか。

自分自身に終了ボタンが押された時に自分自身にreleaseか
autoreleaseを送りたくなりますね。

でも、それはクラスAが生成してクラスBが消滅させるっていう
のが嫌っぽい。誰もが納得する正解はちょっと思い付きません。
806 Name: 802 [sage] Date: 03/07/31 11:02 ID: GnXX0/3M Be:
レスありがとうございます。

>>803,804
オーナーシップポリシーは一応理解できているはずです。
現状はAでBをretainして、Bが作業完了してAを呼んだ時、Aがsenderをreleaseという方法でやっています。
ただAはBを生成して走らせるだけであとは完全にノータッチなのでもう少しスマートな方法は無いかな、と。

>>804
>NSDocument と Document Window のような関係の
>NSDocument 側を生成&消滅させたいってことですね。
うーん、このたとえでいうとむしろWindow側だと思いますが・・・
NSDocumentがまず存在してそいつがGUIを作るんですよね?

繰り返し気味ですが、目標はNSTimerです。
あいつはscheduledTimerWithTimeInterval...で作成すると、retainしなくてもちゃんとfireまで生きていて、repeats:NOであれば自動的に退場してくれます。
でもBは単純にautoreleaseしちゃうと、パネルを表示してユーザの反応待ちになった時点でイベントループから抜けてreleaseされてしまうので困っているんです。
NSTimerはいったいどうやっているんでしょうかね?

>自分自身に終了ボタンが押された時に自分自身にreleaseか
>autoreleaseを送りたくなりますね。
>でも、それはクラスAが生成してクラスBが消滅させるっていう
>のが嫌っぽい。誰もが納得する正解はちょっと思い付きません。
そうなんですよ。
なんか抜け道みたいなものがあるのかと思ったんですが・・・
無いようなら普通にAに解放してもらうことにします。
807 Name: 806の続き [sage] Date: 03/07/31 11:03 ID: GnXX0/3M Be:
ちょっと話が前後してしまいますが・・・
>私の場合は、ControllerをPanelを定義するnibでインスタンス化
>させてしまいます。そうすると生成&消滅するタイミングを気に
>する必要がありません。この方法の欠点は、生成するだけの役割
>のクラスがそのnibのFile's Ownerになってしまうってこと。
これってFile's Ownerはautoreleaseしちゃうんですか?
で、宙ぶらりんになったControllerをNotificationを捕まえてreleaseするということでしょうか?
でもFile's OwnerをreleaseしちゃったらControllerも消えますよね・・・
Contorollerを生成するクラスを間に挟むのはどういう意図なんでしょうか?
私はControllerをPanelのnibのFile's Ownerにしていますが・・・

アルファベットばっかりでわけ分かんないですね。(^^;
808 Name: 名称未設定 [] Date: 03/07/31 12:11 ID: ZhNM6pYt Be:
>806
> 繰り返し気味ですが、目標はNSTimerです。
> あいつはscheduledTimerWithTimeInterval...で作成すると、retainしなくてもちゃんとfireまで生きていて、>repeats:NOであれば自動的に退場してくれます。

あれはちょっと違う。NSRunLoopが一枚かんでます。
内部的にどうなってるか詳しくは調べてはいませんが、

1,NSTimerインスタンスを生成。
2,カレントランループに1を登録。(ここまでがscheduledTimerWithTimeInterval...内)
3,カレントランループが時間に到達したNSTimerオブジェクトにfireを送信。
4,NSTimerオブジェクトがfire内でrepeatを調べ、NOなら自身をinvalidate。
5,カレントランループがinvalidateされたNSTimerオブジェクトをrelease。(っていうかNSArrayから削除してるだけかも)

ていう流れです。
NSTimerは自身をinvalidateするだけで実際に解放するのはNSRunLoopってことです。
(解放と言うかオーナーシップの放棄ね)
809 Name: 名称未設定 [sage] Date: 03/07/31 12:36 ID: t2k0wxQA Be:
>>807
>これってFile's Ownerはautoreleaseしちゃうんですか?

そうです。っていうか、File's Ownerは自分でreleaseしてしまいます。

>で、宙ぶらりんになったControllerをNotificationを捕まえてreleaseするということでしょうか?

で、Controllerはなんもしません。Notificationっていうのは別のアイディア。

>でもFile's OwnerをreleaseしちゃったらControllerも消えますよね・・・
>Contorollerを生成するクラスを間に挟むのはどういう意図なんでしょうか?
>私はControllerをPanelのnibのFile's Ownerにしていますが・・・

ちょっと、誤解されているようです。
MyFactoryClass/MyControllerを独自に作って、nib上には
File's Owner = MyFactoryClass/FirstResponder/Panel/MyController
があるようにします。MyControllerはIBのインスタンス化で作ったものです。

プログラム中からは[[MyFactoryClass alloc] init];して、
MyFactoryClass中でloadNIbNamed:owner:します。
Panel/Controller作ったら、MyFactoryClassはいらなくなるのでrelease。
nibで作ったインスタンスの廃棄処理はプログラム的には気にしなくて
よかったのですよね?だからControllerは必要な限り存在しているし
必要なくなったら破棄されるってことでやっています。

苦肉の策なのでもっと良い方法あれば私も変えたい。
810 Name: 名称未設定 [sage] Date: 03/07/31 12:46 ID: 6M7ykKQe Be:
あの、盛り上がってるところ申し訳有りませんが、
質問させて下さい。

Cocoaアプリのinfo.plistのNSBGOnlyに1をセットすると
ドックにドックを表示せずに起動出来ますよね。
しかし、こうして起動したアプリケーションに対してキー入力
が出来ません。これはこういうものなのでしょうか?

例えばテキストフィールドに文字入力が出来ない。
Command + W でウィンドウが閉じない…等。

これは仕様なのでしょうか?
アプリケーションがアクティブにならないからキーイベントを
受け取れないというのであれば納得できるのですが、出来たら
受け取りたいです。良い方法は無いでしょうか?

それともバックグランドアプリで文字入力はタブー??
811 Name: 名称未設定 [sage] Date: 03/07/31 13:29 ID: MA7IMief Be:
>>795
そんなにがらっと変わったんだ。
初版買っちゃったんだよな~。うかうかしてる間に日本語版とか出てるし(死
でもあんまたいした事なかったんだよね、あれは。

O'Reillyの新刊もそう考えるといいのかなぁ。
812 Name: 名称未設定 [sage] Date: 03/07/31 13:31 ID: sXz6VM9t Be:
>>810
NSUIElement
813 Name: 806 [sage] Date: 03/07/31 17:59 ID: Z8iT+W5Z Be:
>>808
ほほう、NSRunLoopが管理してたんですか。
勉強になりました。
そう特殊なことをやっているわけではないんですね。

>>809
>nibで作ったインスタンスの廃棄処理はプログラム的には気にしなくて
>よかったのですよね?
え、そうなんですか?
ウィンドウが閉じられたらnib上のインスタンスが全部解放されるとか?
(そういわれてみるといままでもそうだったのかな)
それならBをnibでインスタンス化しておいて、
FactoryClassを作成してすぐにautoreleaseで良いのかも。
作業が完了したら自分でパネルを閉じるので、
そこで(そのうち?)nib上のインスタンスは全部解放してもらえる、と。
よく分からないんで、あとでテストしてみます。
814 Name: 名称未設定 [sage] Date: 03/07/31 21:36 ID: 6M7ykKQe Be:
>>812
サンクスコ!
最初クラス名かと思って探しちゃいました…。
思ってた事が出来ましたよ( ´Д⊂ .... メグスリ タゾ. ゴルァ゙
815 Name: 名称未設定 [sage] Date: 03/07/31 21:59 ID: uAmd+BBO Be:
>>813
>ウィンドウが閉じられたらnib上のインスタンスが全部解放されるとか?
Nibの読み込みにNSWindowControllerを使うとそうなる。
NSBundleから読み込むと自分で解放する必要有り。

……と、DevTool付属のドキュメントに有ったと思う。
816 Name: 815 [sage] Date: 03/07/31 22:03 ID: uAmd+BBO Be:
http://developer.apple.com/documentation/Cocoa/Conceptual/LoadingResources/Concepts/NibFileLoaded.html

これの後半部分だね。
817 Name: 名称未設定 [sage] Date: 03/07/31 22:38 ID: Z8iT+W5Z Be:
>>815,816
おおー、なるほど。
そういうことでしたか。
WindowControllerはまだ良く分かってないんでちょっと読んでみます。
どうもです。
そういえばヒレガス本かなんかでもこれ説明されてるんですよね。
今度立ち読みしときまふ。
818 Name: 名称未設定 [sage] Date: 03/08/01 00:11 ID: j+QpMnPT Be:
>>815,816

ありがとん。自作プログラム修正しなくちゃ。
819 Name: 名称未設定 [] Date: 03/08/01 16:50 ID: 7B1ZjzpR Be:
質問です。
ドロワーってユーザーが自由に大きさを変えられますが、これの大きさをAutoSave
するにはどうすればいいのでしょうか。
NSWindowの、-setFrameUsingNameみたいなのもないみたいですし・・。
820 Name: 名称未設定 [sage] Date: 03/08/01 21:28 ID: y8unTgrE Be:
AutoSaveは無理なんじゃないの?
自分で保存しようよ。
大した手間じゃないし。
821 Name: 名称未設定 [sage] Date: 03/08/01 22:57 ID: MbBgXFR2 Be:
今JAVAでCocoa用のライブラリを作ろうとしてるんですけど、
ProjectBuilderでプロジェクトを作らずに普通にCocoaライブラリに
クラスパスを通してコンパイル-テスト(JUnit)を行うとコンパイルは普通に
通るのですが、テスト時に _NSAutoreleaseNoPool() エラーが多数出力されます。

それでもテストには成功するのですが、精神衛生上よろしくないっす。
多分正常な(Cocoaが内部的にやってくれている)処理を踏んでいないので
起こるのだと思われます。解決方法は無いものでしょうか?

どなたか、Cocoa-Javaライブラリを作った方いましたら体験談
が聞きたいっす。
822 Name: 山崎 渉 [(^^)sage] Date: 03/08/02 02:06 ID: pAaIAblN Be:
(^^)
823 Name: 名称未設定 [sage] Date: 03/08/02 09:27 ID: ATjiMNLT Be:
>>821
>通るのですが、テスト時に _NSAutoreleaseNoPool() エラーが多数出力されます。

よくわかりませんが、そのライブラリの入り口で
NSAutoreleasePool.push();
出口で
NSAutoreleasePool.pop();
してやればどうでしょうか?
824 Name: 名称未設定 [sage] Date: 03/08/02 11:55 ID: 9tDPnMYy Be:
現在Macがインターネットに接続されているかどうか調べるにはどうしたら良いんでしょうか?
Cocoa、Carbonどっちでもいいんですが
825 Name: 名称未設定 [ネタなんだけどな sage] Date: 03/08/02 18:41 ID: 09kWCvYP Be:
>824

NSTaskでPingを使ってみたら?
826 Name: 名称未設定 [sage] Date: 03/08/04 11:08 ID: JJk6Ww9z Be:
以前は変数はメソッドの先頭で宣言でしなくてもエラーにならなかったのに、
いつの日からかparse error before '*' と出るようになりました。
NSString *string;
NSLog(@"test");
string = @"string";
は問題ないのに
NSLog(@"test");
NSString *string = @"string";
だとエラーになります。なぜだか分かる方いないでしょうか?
827 Name: 名称未設定 [sage] Date: 03/08/04 11:29 ID: TiNF3m10 Be:
>>826
そういうもんです。

変数の宣言は必ずメソッドの最初でやるべき。
なぜと言われてもコンパイラのバージョンが挙がったからでないの?
別にNSLogの順番が変わったところで対した問題でも無し。
828 Name: 826 [sage] Date: 03/08/04 11:40 ID: JJk6Ww9z Be:
>>827
そういうもんなんですか... いつからこうなったんでしょう。
僕みたいな初心者が参考書を見ながらプログラムする時困るんじゃないだろか。
829 Name: 名称未設定 [sage] Date: 03/08/04 12:07 ID: TiNF3m10 Be:
どこでも好き勝手なとこで変数がでっち上げられちゃうほうがよほど困るよ
Perlとかな
830 Name: 名称未設定 [sage] Date: 03/08/04 12:16 ID: y4WqvXs7 Be:
>>827
> 変数の宣言は必ずメソッドの最初でやるべき。
この仕様もどうかと思うんだけどね・・
変数の宣言が集中しちゃってややこしくなっちゃう。
831 Name: 名称未設定 [sage] Date: 03/08/04 12:25 ID: TiNF3m10 Be:
一時的に使う変数を最初に宣言するのが嫌なら、
その一時的に使うルーチンを別の処理単位に分けたほうがいいよ。
メモリの動的管理という意味からも、そのほうがいい。と、思う。
832 Name: 名称未設定 [sage] Date: 03/08/04 15:02 ID: 2KrYbm7N Be:
>>825
gcc3.3 (Dec2002gccUpdater) 入れてない?
デフォルトコンパイラが gcc3.3 になってると、Project Builder が gcc2.95
を使うようになって、ISO C99 の拡張が無効になる、ということみたい。
とりあえず、
gcc_select 3
すればよい。詳しくはアップデータ付属のドキュメントを読む。
833 Name: 名称未設定 [sage] Date: 03/08/04 20:18 ID: k7WfjE9d Be:
>>830
メソッドの途中でしか使わない変数は、中括弧で囲ったブロックの中に閉じこめれば
いいと思うけどな。
下手に処理単位を分けると却って引数の受渡しでごちゃごちゃする怖れもあるし、
この方法が個人的には気にいってる。
834 Name: 名称未設定 [sage] Date: 03/08/05 08:53 ID: 10KRv2tD Be:
>>824

TechNote 1145が参考になるかと思います。
原理はEntpointを作成してみて確認するという
無理矢理な方法で確認しています。

それか、System Configuration Frameworkのドキュメントを見て下さい。
原理はやっぱりDynamic Storeに有効なIP Addressを持つものが
あるかどうかを調べると言う、
やっぱり無理矢理だなあという方法を使っています。

Jaguarだとこれが限界ではないかと思います。
835 Name: 824 [sage] Date: 03/08/06 13:06 ID: cLUQBlNu Be:
>>825,834
レスサンクスです&遅レスすいません
ストレートに調べることはできないみたいですねえ。
API一発で調べられるのかと思ってたんですが・・・
何も考えずとりあえずつないでみるってのが一番手っ取り早いのかもしれませんね。
836 Name: 名称未設定 [sage] Date: 03/08/06 16:18 ID: JFTNy68Y Be:
"Learning Cocoa with Objective-C 2nd Edition"で勉強している所ですが、
初版と比べてやっぱりずいぶん分かりやすくなってますね。
Currency Converter Tutorialのくだりは初版ではわかりにくかったのが、
ずいぶん説明が整理されて、ワシのようなド素人でも
何とかなるレベルになってました。
英語で文献を読める人なら、お勧め、って感じです。
837 Name: 名称未設定 [] Date: 03/08/08 22:58 ID: 6SrqXNAY Be:
838 Name: 名称未設定 [sage] Date: 03/08/11 00:28 ID: zp5/eJSH Be:
マルチウィンドウなアプリを作る場合にですね、
新しいウィンドウを動的にいくつも生成したいわけです。

この場合、Interface Builderではどのようにすれば、実現できますか?
同じnibファイルに新しいウィンドウとして作ると、最初からインスタンス化されたままに
なりますよね?

あと、他のアプリを覗いてたら、複数のnibファイルに別れてるんですけど、
これはどうやって読み込むんでしょうか?
839 Name: 名称未設定 [sage] Date: 03/08/11 06:35 ID: Oj26dXoC Be:
一般的な、ファイルの中身をウインドウに表示するものなら
プロジェクト新規作成時にDocument-basedを選べば良い。
840 Name: 名称未設定 [sage] Date: 03/08/11 07:58 ID: 8TwafDpy Be:
>838
>あと、他のアプリを覗いてたら、複数のnibファイルに別れてるんですけど、
>これはどうやって読み込むんでしょうか?
NSBundleのloadNibNamed:owner:
841 Name: 名称未設定 [sage] Date: 03/08/11 11:02 ID: zp5/eJSH Be:
うーん、画像ビューワーなんですが、画像を表示するウィンドウの他に、
操作用のウィンドウ(これが本体)が必要なんですよ。

そういうのって Document-basedでいけるんですかね。
842 Name: 名称未設定 [sage] Date: 03/08/11 11:44 ID: 4y8SFX1s Be:
NSWindowControllerのinitWithWindowNibName:のが適当じゃない?
843 Name: 名称未設定 [sage] Date: 03/08/11 13:36 ID: Oj26dXoC Be:
>操作用のウィンドウ(これが本体)
所謂、「インスペクタ」だと思っていいのかな?
MainMenu.nibでユーティリティウインドウを作ってもよさげな感じがするけど。
844 Name: 名称未設定 [sage] Date: 03/08/11 16:44 ID: zp5/eJSH Be:
>>842
それっぽいです。助かります。

>>843
そうかもしれませんけど、私にはそれが何か良く分かりません…どうもすいません。
ところで、Document-basedでのアプリの作り方がまるで分からないんですが
別に使わなくても出来そうな気もします。どうなんでしょう?
845 Name: 名称未設定 [sage] Date: 03/08/11 17:06 ID: NZvMm39u Be:
>>844
> 別に使わなくても出来そうな気もします。どうなんでしょう?
使わなくても出来るけど使ったほうが楽チン。
846 Name: 名称未設定 [sage] Date: 03/08/11 17:41 ID: zp5/eJSH Be:
うーん、HDMTやらよしきを見て見たんですけど、
今のところとりあえずQuickTime(OSかな?)が提供してくれてる画像ルーチンを
使えればいいので、Document-basedだとファイルタイプとか拡張子とか確認して登録するのが
面倒くさい分不利な気がしてきました。

ということで今回は普通のCocoaアプリとして作ったほうが面倒が少なそう…
847 Name: 名称未設定 [sage] Date: 03/08/11 17:44 ID: 4uyENI11 Be:
>846
QTが再生できる全フォーマット用のファイルタイプがあったはず!

でも忘れた(泣
848 Name: 名称未設定 [sage] Date: 03/08/11 18:01 ID: zp5/eJSH Be:
だ、ダメじゃん…w

どうでもいいけど、PICも展開できたらいいかなと思って
「PIC 稲妻展開」で検索したらX68kへの愛が感じられるテキストがヒットして
泣けてきましたよ。
849 Name: 名称未設定 [sage] Date: 03/08/12 00:12 ID: lemn98gD Be:
Interface Builderで、ウィンドウのサイズが一定より小さくならないんですが、
これはIBの仕様なのかOSの仕様なのかどっちなんでしょう?
この限界を突破してもっと小さいウィンドウを作りたいんですがどうすればいいですか?
850 Name: 名称未設定 [sage] Date: 03/08/12 04:33 ID: 3swArVMy Be:
サイズの最小を変更しよう!
そうしよう!
851 Name: 名称未設定 [sage] Date: 03/08/12 05:11 ID: LIY+RbFP Be:
NSTextField に入っているのが、文字か数字(整数)か判別したいんですけど
決まったやり方みたいなのはあるのでしょうか?
今はintValueで返って来た値をみて、0が入っていた場合や
全角の数字が入っていた場合を始めに振り分けた上で判断するしかないのかな
と思っているのですが・・・
852 Name: 名称未設定 [sage] Date: 03/08/12 06:49 ID: 0XfSgYbZ Be:
もっと良い方法があるだろうと思いつつも NSCharacterSet を使った方法。

-(BOOL)isIntegerString:(NSString*)string{
NSCharacterSet *set=[NSCharacterSet decimalDigitCharacterSet];
int i;

for (i=0;i<[string length];i++) {
if ([set characterIsMember:[string characterAtIndex:i]] == NO) return NO;
}

return YES;
}

NSCharacterSet の使い方がいまいち分からないです。
853 Name: 名称未設定 [sage] Date: 03/08/12 07:04 ID: XNTyuzEO Be:
>>851

NSScannerのscanInt:を使いましょう。
854 Name: 名称未設定 [sage] Date: 03/08/12 07:22 ID: 0XfSgYbZ Be:
NSScanner の scanInt: だと、
例えば @"10a" といった文字列の場合に YES が返ってくるような気もしますが。
855 Name: 853 [sage] Date: 03/08/12 08:10 ID: XNTyuzEO Be:
>>854

YESが返ってきますね。失礼しました。
では、こんな方法でどうでしょう?
-(BOOL)isIntegerString:(NSString*)string{
NSCharacterSet *set=[NSCharacterSet decimalDigitCharacterSet];
NSScanner *scanner=[ NSScanner scannerWithString:string ];

if([ scanner scanCharactersFromSet:set intoString:nil ] && [ scanner isAtEnd ]) {
return YES;
} else {
return NO;
}
856 Name: 名称未設定 [sage] Date: 03/08/12 10:15 ID: I+YZR2OA Be:
>851
何をするために判別するのでしょう?
目的によって最適な方法は変わると思いますが。
857 Name: 名称未設定 [sage] Date: 03/08/12 11:51 ID: lemn98gD Be:
>>850
ありがとう。できました。

ところで、Project Builderについてなんですけど、
ClassesとOther Sourcesとあって、Interface Builderから作ったソースやヘッダは
Other Sourcesに置かれるんですが、じゃあClassesには何を置くとか、そういう使い分けは
基準はあるんですか?
858 Name: 名称未設定 [sage] Date: 03/08/12 12:36 ID: Z1N1NXbr Be:
>>857

たまたまでは?最後に選択したファイル/グループによって
その時々でファイルの作成場所は違っているようです。
859 Name: 851 [sage] Date: 03/08/12 18:17 ID: HHx7bqnA Be:
>>852, 855
ありがとうございます。そんな方法があったとは!
NSCharacterSetは、まったく気が付きませんでした。ドキュメント読み直さねば。

>>856
NSTextFieldの入力を見て、数字入力と文字入力の振り分けがしたいのです。
数字だった場合は、リストに登録してある番号に、その数があるかどうかを見て
あった場合は、その番号に対応する項目名を自動入力したいなーと。登録が
なかった場合は、エラーを返して入力を促します。
文字列だった場合は、リストに重複がないかを見て、新しい項目名だった場合は
追加登録するという流れです。
860 Name: 名称未設定 [sage] Date: 03/08/12 18:54 ID: 0XfSgYbZ Be:
>>859
一つの TextField に複数の機能を持たせた場合、
画面はシンプルになりますが、頭の中は逆に混乱してしまうので、
そこらへんを検討された方が良いのではないかとも思います。
861 Name: 名称未設定 [sage] Date: 03/08/12 21:33 ID: 4hIyEcXi Be:
>>859
そう言う用途なら単に最初の1文字が数字かどうかで分けても実用上問題ないと思うけど。
862 Name: 名称未設定 [sage] Date: 03/08/12 21:40 ID: lemn98gD Be:
>>867
えっ、そうですか?
PBから、適当なところをクリックして新しいファイルを作ると好きなところに置けますけど、
IBから(PBでMainMenu.nibをダブルクリック)だと今まではOther Sourcesにしか
ファイルが置かれたこと無いんですけど。
863 Name: 名称未設定 [sage] Date: 03/08/13 01:29 ID: dO1suOK8 Be:
>>862
確認のため、今試したけどIBからソース書き出しする前に
Classグループを選択しておいたら、ちゃんとそこに書き出された。

環境は?こっちは10.2.6 + Jul 2002
864 Name: 名称未設定 [sage] Date: 03/08/13 01:41 ID: potkRvDl Be:
>>863
ありがとう、意味が分かりますた。
何となく常にResourcesを選択していた(多分main.mがあるから)のが、
間違いの始まりだったのか…
普通に考えたら、クラスの定義するファイルなんだからClassesに置くのが当たり前ですよね。
865 Name: 名称未設定 [sage] Date: 03/08/13 02:31 ID: potkRvDl Be:
と思ったら、Classesを選択してから書き出しても
やっぱりOther Sourcesに書き出される…なんでだ!?

こちらは 10.2.6 December 2002でおます。
結局生成してからClassesにドラッグしてまふ…
866 Name: 名称未設定 [] Date: 03/08/13 06:59 ID: AAHCYJID Be:
Cocoaでわからないことがあります。
・ファイルがエイリアスであるかどうかを判別する方法と、
・エイリアスだった場合、元ファイルのパス
誰かご教示下さい。
867 Name: 名称未設定 [sage] Date: 03/08/13 07:34 ID: BXHerPj4 Be:
>>866
ttp://homepage.mac.com/nathan_day/pages/source_frames.html
ttp://cocoa.karelia.com/Foundation_Categories/NSFileManager__Reso.m
868 Name: 名称未設定 [sage] Date: 03/08/13 07:56 ID: BXHerPj4 Be:
>>846
>Document-basedだとファイルタイプとか拡張子とか確認して登録するのが面倒くさい
NSDocumentを使わないアプリでもファイルタイプとか拡張子を登録しないと開けない
ので変わりはない。
何でも開ける設定にして自前で判断するにしても、NSImageで表示させるつもりなら、
NSApplicationのdelegateで

- (BOOL)application:(NSApplication *)theApplication openFile:(NSString *)filename
{
if([NSImageRep imageRepClassForFileType:[filename pathExtension]]){
[[NSDocumentController sharedDocumentController]
openDocumentWithContentsOfFile:fileName display:YES];
}
return YES;
}

とかすればDocument-basedで問題ない。なぜそんなにDocument-basedを嫌う
869 Name: 名称未設定 [sage] Date: 03/08/13 15:38 ID: FOdqydDA Be:
>>846,868
ドロップされたファイルを全部受け取りたいなら
ファイルタイプを"*"にしときゃいいだけだと思うが。

>なぜそんなにDocument-basedを嫌う
単にOSの仕組みを知らないだけだろう。
そもそもDocument-basedにしないと
DnDやファイルオープンダイアログでの
フィルタリングは効かないからな。
870 Name: 866 [sage] Date: 03/08/13 18:14 ID: 3/Oef21X Be:
>>867 サンクスコ
871 Name: 名称未設定 [sage] Date: 03/08/13 20:24 ID: GR0Rf7t5 Be:
> そもそもDocument-basedにしないと
> DnDやファイルオープンダイアログでの
> フィルタリングは効かないからな。

嘘。
NSOpenPanelを100回読め。
872 Name: 851 [sage] Date: 03/08/14 03:24 ID: 7jqNoBtb Be:
>>860
ありがとうございます。そこが結構気になっている部分なんです。
ただ、同じ一つの項目を入力させるのに2つのフィールドがあるのも
混乱する所かなーと思って、とりあえず二種類作ってみることにしたのですが
いまだ結論は出ず。
873 Name: 名称未設定 [sage] Date: 03/08/14 22:15 ID: XymbVs6B Be:
NSOpenPanelのテストとして、こういうのを書いたんですけど、
なぜかファイルを選ぶとバスエラーで終了します。
キャンセルした場合は問題ない模様。
どこかおかしいところはある?

- (IBAction)openFile:(id)sender
{
NSOpenPanel *op = [NSOpenPanel openPanel];
int result;

result = [op runModalForDirectory:NSHomeDirectory() file:nil types:[NSImage imageFileTypes]];
NSLog(@"result = %@", result);
}
874 Name: 名称未設定 [sage] Date: 03/08/14 22:22 ID: XymbVs6B Be:
ごめん、NSLogのフォーマットを %@から%dにしたら直ったよ…
intにdescriptionなんて搭載されなかったよ…
875 Name: あぼーん [あぼーん] Date: あぼーん ID: Be:
あぼーん
876 Name: 名称未設定 [] Date: 03/08/16 19:17 ID: K0Oq6bvQ Be:
いつもはMenuItemのactionに接続されてて、senderのtagを読み取って
処理を分けてるメソッドがあるんですけど、このメソッドをコードから使う方法って
ありますか?

コードから直にそのメソッドを呼び出したらsenderにtagがないことになるし、
かといって、NSMenuItemには「actionを送れ!」というメソッドもないみたいだし・・・。

おわかりの方がおられましたらお教え下さい。
877 Name: 名称未設定 [sage] Date: 03/08/16 19:37 ID: 6EbzeRpn Be:
呼び出し元のオブジェクトに -(void)setTag:(int)value; と -(int)tag; を実装して
-(void)setTag:(int)value; で tag の値をセットした後で
sender に呼び出し元のオブジェクトを渡しつつ NSMenuItem の action メソッドを呼ぶとか。
878 Name: 名称未設定 [sage] Date: 03/08/16 19:39 ID: 2hOZdQ4k Be:
>>876
-(IBAction)myAction:(id)sender{
//とかやって
[self myMessage:[sender tag]];
}

-(void)myMessage:(int)tag{
//直接こっちを呼べばいいのでは
}
879 Name: 876 [] Date: 03/08/16 20:02 ID: K0Oq6bvQ Be:
>>877,878

ありがとうございます。
どちらもなるほどー!といった感じです。解決策は一つではないと言うことですね。
ひとまずは>>878さんの方法でいってみることにします。ありがとうございました。
880 Name: 名称未設定 [sage] Date: 03/08/17 00:03 ID: cA2KncTA Be:
プログラミングなんて一度もやったことないおいらが
自分のオナニーのためだけに画像ビューアー作るよ!
881 Name: 名称未設定 [sage] Date: 03/08/17 01:52 ID: niIZ1BXS Be:
>>880
gangare!
882 Name: 名称未設定 [] Date: 03/08/18 00:05 ID: QxQeZONZ Be:
すいません、質問です。

ビユーのRect情報の取得なのですが、frameを使って取得すると、
実際のサイズより大きな情報を取得してきてしまいます。
やりたいのは実サイズの取得なのですが、どのメソッドを使えば良いのか、
探しましたが見つかりません。

インターフェースビルダーで言うところの、Layout Rectに相当する
情報です。よろしくお願いいたします。
883 Name: 名称未設定 [sage] Date: 03/08/18 00:38 ID: 7RxquvZG Be:
bounds のこと?
884 Name: 882 [] Date: 03/08/18 01:33 ID: QxQeZONZ Be:
boudsだと、以前やった時はframeとサイズ的には同じ値を
返してきたので違うのです。
もしかして一発では無理なのかもしれないのですが、どうやれば
できるのかが分かりません。
885 Name: 名称未設定 [sage] Date: 03/08/18 02:54 ID: SCMqRkkU Be:
>>884
残るはvisibleRectかな
NSScrollViewに入ってるならdocumentVisibleRectやらNSClipViewのframeやら?
おいらもちゃんと理解してないですけど(´д`;)
886 Name: 882,884 [] Date: 03/08/18 04:08 ID: QxQeZONZ Be:
相手はNSButtonなのです。
ご紹介頂いたvisibleRectも以前試してみたところ撃沈でした。
NSScrollViewのdocumentVisibleRectやNSClipViewのframeは
相手がNSButtonなだけにダメそうです。
簡単なことのように思うのですが、なぜ一発呼び出しができないのか...
Cocoaってたまに理解に苦しむことがあります。
887 Name: 名称未設定 [sage] Date: 03/08/18 09:04 ID: 0rnO+OwB Be:
>882
frameであってる。多分描画してある部分とのずれの話だと思うけど。。。

たとえば、IBでNSButtonを配置後、インスペクタのカスタムクラスを独自クラス(例えばCButton)に変更し、

@interface CButton : NSButton
@end

@implementation CButton
-(void)mouseDown:(NSEvent*)event
{
NSLog(@"Click!");
[super mouseDown:event];
}
@end

を実装してやって、ボタンの周囲をクリックしまくってみなはれ。
DevToolに入ってるPixel(だったっけ?)を起動してやると細かいところまで分かるよ。
888 Name: 883 [sage] Date: 03/08/18 09:54 ID: U6ightR6 Be:
>>882
NSButtonのIBでいうLayout Rectなら、frameから12ずつ引けばいいんじゃない?
Layout Rectの数字はIBがボタンの影の部分とかの大きさを抜いて、
レイアウト用に出してる数字じゃなかったっけ?

間違ってたらスマソ
889 Name: 名称未設定 [sage] Date: 03/08/21 18:38 ID: rLCFQVxz Be:
IBのファイルみたいにファイルをバンドルにして保存したいのですがどうしたらいいのでしょう?
NSWorkspaceのisFilePackageAtPath:で判定はできるんですが、セットの方法が分かりません。
890 Name: 名称未設定 [sage] Date: 03/08/21 22:17 ID: VLE3j2+x Be:
>889

1,info.plistの書類のタイプで「ファイルパッケージ」にチェック。拡張子を指定。
2,NSFileWrapperを使う。この時ファイルネームに1,で指定した拡張子を使用する。

拡張子ではなくファイルタイプでも行けるかもしれませんが、試してません。
891 Name: 名称未設定 [] Date: 03/08/21 22:55 ID: Oz1Jgrhf Be:
NSImageViewで質問

1.setImageでNSImageを描画する
2.NSImageViewを別の場所へ動かす
3.setImageで別のNSImageを描画する

すると前(1)に描画したNSImageが残っているんです。
これを消すことはできないんでしょうか?
892 Name: 名称未設定 [sage] Date: 03/08/21 23:01 ID: ZKzVSuK6 Be:
-(void)display; を呼んで強制的に再描画するとか。
893 Name: 名称未設定 [sage] Date: 03/08/21 23:18 ID: Oz1Jgrhf Be:
>>892
ありがとうございます。なんとかなりました。いや、NSWindow側とは。。。
NSImageViewもしくはNSImageの問題だと思って、ずっと「メモリの解放なのかな?」とかうんうん唸ってました
894 Name: 名称未設定 [sage] Date: 03/08/21 23:21 ID: VLE3j2+x Be:
>891
>1.setImageでNSImageを描画する

NSImageView* target; // 既に動かすViewが入っているとする。
[[target superview] setNeedsDisplayInRect:[target frame]];

>2.NSImageViewを別の場所へ動かす。
>3.setImageで別のNSImageを描画する

この順で。
895 Name: 名称未設定 [sage] Date: 03/08/22 00:13 ID: OgneJbil Be:
>>894さん、わざわざありがとうございます
実はJava使いなのでObj-Cの解釈が間違っていたらすみません

NSImageViewのスーパークラスであるNSView
その中に用意されているメソッドsetNeedsDisplayInRectを呼び出している

ってことだろうと解釈しました。
で、さっそくCocoaリファレンスを見て引数など確認。
さぁ、いざ使ってみるかな。。。。「シンボルが解釈できません」

なぜ?と思い本家appleDevelopersに行ってJava用リファレンスを見てみると、
「setNeedsDisplayInRectがない!!」
>>http://developer.apple.com/documentation/Cocoa/Reference/ApplicationKit/Java/Classes/NSView.html#//apple_ref/doc/j_ref/NSView

Java萎え~。残念です。
>>894さん、親切にありがとうございました。
896 Name: 名称未設定 [sage] Date: 03/08/22 00:40 ID: LTbImdDl Be:
Javaでしたか。リファレンス見てみました。
Javaの場合多分こうなります。

terget.superview().setNeedDiplay( target.frame() );
897 Name: 名称未設定 [sage] Date: 03/08/22 00:55 ID: OgneJbil Be:
>>896
夜遅くなのにありがとうございます
target.setNeedsDisplay(target.frame());
でなんとか消えました。少し早くなったようです。
898 Name: 889 [sage] Date: 03/08/22 10:40 ID: ThM6NSFw Be:
>>890
サンクス!
Document Basedではないので書類のタイプ設定してもどういう風に使えばいいのかよく分かりませんが、それは自分で調べます。
899 Name: 名称未設定 [] Date: 03/08/25 19:09 ID: ju0ihoQV Be:
IBじゃなくてプログラムでアウトレットを設定するやりかたがわかりません!! Cocoaはやっぱりで昔解説されてたような気がするの ですがもう見られません!! すみませんが教えて下さい!!
900 Name: 名称未設定 [sage] Date: 03/08/25 20:07 ID: qK6Ad3nC Be:
Cocoaの大抵のクラスはsetXxxで
// Xxxはアウトレットの名前
行けたと思うけど。
901 Name: 名称未設定 [sage] Date: 03/08/25 23:43 ID: 7l9ov3oK Be:
>>899
>アウトレットを設定

意味がわからない??
902 Name: >>899 [sage] Date: 03/08/26 00:07 ID: rV6cWmPM Be:
クラスのヘッダファイルに

IBOutlet NSHogehoge *hoge;

を追加してやって、IBで読込んだらいいんじゃ?
903 Name: 名称未設定 [sage] Date: 03/08/26 03:04 ID: FxHxecdd Be:
萩原本に書いてるので立ち読みしてきたら?
904 Name: 名称未設定 [sage] Date: 03/08/27 00:29 ID: Om2pRXft Be:
どうも最近癖で
NSBeep(1);
と書いてしまう....
905 Name: 名称未設定 [sage] Date: 03/08/27 00:32 ID: Om2pRXft Be:
Cocoa ってゲーム作るときはやっぱ OpenGL 使うしかないの?
906 Name: 名称未設定 [sage] Date: 03/08/29 06:32 ID: KuLaet3t Be:
>>905
しかないってことはないけど(NSImageをぺたぺたやればグラフィックはできるし)、
OpenGLを使うのはいい方法なんじゃない?
2Dでもコーツイクストリームで高速そうだしー。
詳しい人の意見も聞きたいなあ。
907 Name: 名称未設定 [sage] Date: 03/08/29 19:19 ID: g3UFcZWJ Be:
RGBの画像データとグレースケールのアルファチャンネルデータがありまして、
この2つをプログラム内で合成したいのですが、どのような方法がありますでしょうか。
908 Name: 名称未設定 [sage] Date: 03/08/29 20:49 ID: RY31j0Bk Be:
GRBとAをGRBAにする。
909 Name: 907 [sage] Date: 03/08/30 09:11 ID: dTk5i4WI Be:
>908
それがわからないんです。>GRBとAをGRBAにする

RGB画像とアルファ画像をそれぞれNSImageに読み込んで
compositeメソッドで合成しようとしてるんですがうまくいきません(アルファ画像が白黒画像として解釈されてしまう)
なにか根本的に間違ってるんでしょうか。
910 Name: 名称未設定 [sage] Date: 03/08/30 23:41 ID: ZaPdnmBR Be:
ところでCocoaから気軽に使える正規表現ライブラリってないですか?今は
regex(3)を地道に使ってるけどやっぱNSStringを受けてくれる奴が欲しいです。
みんな自作してるのかな?
911 Name: 名称未設定 [sage] Date: 03/08/31 00:17 ID: 6hhW/fCE Be:
Cocoaって、nibファイル無しでWIndowを描画するってできるんでしょうか。
できるのならメソッドの書き方を教えてください。
今、とあるソフトのプラグインを書いていて
そのプラグインからWindowを呼び出したいのです。
912 Name: 名称未設定 [sage] Date: 03/08/31 01:01 ID: CbGq0nL6 Be:
>>910
AGRegx or MOKit
913 Name: 名称未設定 [] Date: 03/08/31 01:15 ID: 2wCslq7m Be:
>>910
日本語の使える正規表現で困ってたけど、鬼車と自作ラッパーで
検索アプリ作れた。一度やってみなよ。
基本的な関数のみだけど、いろんな表現形式が使える。
修正BSDライセンスでGPLみたいなウィルス性はないし、フレームワークにして
思い切って公開してしまえば神になれる。
暇なきゃ必要な分ラップすればいいだけ。実用になる。
漢字コードもEUCとかUTF8とかShiftJISがあるからマジでお勧め。
914 Name: 名称未設定 [sage] Date: 03/08/31 01:21 ID: Wpx5ewRW Be:
>>911
ソフトのプラグインを書ける人が、どうしてこんな質問できるのかが知りたい。
915 Name: 名称未設定 [sage] Date: 03/08/31 02:01 ID: 6hhW/fCE Be:
>>914

carbonならできるんだけどね。
Cocoaがわからんのですよ。
そんなに楽勝な事なのか・・鬱。
916 Name: 915 [sage] Date: 03/08/31 02:08 ID: 6hhW/fCE Be:
じゃぁ、carbonで書けっていうことになりそうなんで
書いておきますが、Carbonでwindow描くと
ホストがcocoaだからなのか虹がぐるぐる回るもんで
cocoaで描くと上手く行くかなと思って聞いてます。
917 Name: 名称未設定 [sage] Date: 03/08/31 03:25 ID: YH95XynT Be:
>>915
CocoaのBundleプラグインならNib使えるんでは?
918 Name: 名称未設定 [sage] Date: 03/08/31 06:06 ID: ZxK3gomO Be:
>>913
そこまでやってるなら913が神になってくれ
919 Name: 名称未設定 [sage] Date: 03/08/31 06:20 ID: O76O4pmJ Be:
>>915
いわゆる荻原本に Interface Builder 使わない Window の作り方が書いてあったような。
920 Name: 名称未設定 [sage] Date: 03/08/31 07:12 ID: cijs1LIB Be:
>>915,919
荻原本には書いてあるね。

ざっくり言えば、
NSWindow *window = [[NSWindow alloc]
initWithContentRect:NSMakeRect(x, y, w, h)
styleMask:NSTitledWindowMask | ...
backing:NSBackingStoreBuffered defer:YES];
NSButton *button = [[[NSButton alloc]
initWithFrame:NSMakeRect(x, y, w, h)] autorelease];
[[window contentView] addSubView:button];
てな感じ。

まあ、nib から読み込むほうがスマートだとは思うけど...
921 Name: 909 [sage] Date: 03/08/31 07:49 ID: OgP5ty3I Be:
まだつまっています。
解答するのもアホらしい質問なのかも知れませんが、
どこか勉強できるサイト、あるいは書籍を教えていただけませんか…
922 Name: 名称未設定 [sage] Date: 03/08/31 10:00 ID: YW6hofkM Be:
>>907

具体的には、アルファチャンネル付きのNSBitmapImageRepを作成し、
bitmapDataメソッドでビットマップ情報を格納する領域の
ポインタを取得して、そこへRGBとアルファチャンネルの情報を
書きこんでいきます。
入力元の画像からBitmap情報を取り出すには、
NSBimapImageRepのinitWithData:メソッドでオブジェクトを
作成し、やはりbitmapDataメソッドでビットマップ領域の
ポインタを取得します。

作成したNSBitmapImageRepはNSImageにaddRepresentation:して
使います。

APIリファレンスの、NSBitmapImagRepの
initWithBitmapDataPlanes:pixelsWide:pixelsHigh:bitsPerSample:samplesPerP
ixel:hasAlpha:isPlanar:colorSpaceName:bytesPerRow:bitsPerPixel:
メソッドの説明も参照してください。


だいぶ昔、英語サイトで画像合成のサンプルコードを見かけた事があるので、
それを見せられれば早いんだけど……。URL失念してしまいました。
923 Name: 名称未設定 [sage] Date: 03/08/31 11:24 ID: 2wCslq7m Be:
>>918

    ,.-――――――――――――-、    ダメだっ…… オレはダメなんだ……
   /                     \    わかったんだよ……
   \                        l    オレには もう…… わかった…
     >、                    |
    /―`\、                    |     鬼車派には二種類ある…と
  /―――u \__              |
  ヽ ヽ二二ニニニヽ`ー-、_____           |  ラッパーを作って公開できる奴と
   n===~=-、===============、      .|    それができない奴と・・・
   | |〉 i]   )   u     | |⌒`i    .|
   | |  └┐r'  u       | |⌒`|     .|  オレは…… そのダメな方……
  ./U u`ーし‐'     U   .l |(^) |      |   …ダメなんだ…
∠__ )  O ーU-、\.  .| .|___ノ     |
   <_____  ヽ   .Vヽ      |  どうしてもマイナスのイメージが拭えない…
     └┴┴┴┴`i  l  /  \     |      フレームワークを作ろうとしても……
      ┌┬┬┬rノ    /     \    |\  自作アプリでは一部のメソッドしか使わない姿がちらついて……
     匚 ̄ ̄ ̄ ̄u.   /       \/    どうしてフル機能のラッパーを作ることが出来ない………
      |   U  u    /       /      今も苦悶中………
        l_____/       /      もう自分の必要最低限を作るのでギリギリ……精一杯なんだ………
924 Name: 名称未設定 [sage] Date: 03/08/31 11:55 ID: Vck73lXl Be:
>>922
これは関係ないかな。
http://cocoa.mamasam.com/COCOADEV/2001/09/1/11010.php

適当に検索しただけなので、ちごてたらすまん。
925 Name: 907=909 [sage] Date: 03/08/31 12:19 ID: OgP5ty3I Be:
>>922,924

ありがとうございます!

NSImageRepresentationは勉強してませんでした。
早速勉強して参ります。
926 Name: 915 [sage] Date: 03/08/31 14:06 ID: EcGR2iXP Be:
みなさんレスどうもです。
荻原本買ってきます。
927 Name: 名称未設定 [sage] Date: 03/08/31 17:46 ID: oNFM+YRd Be:
>>910
遅レスだが、NSStringはUTF-8で値を持ってたと思うから、PCREにUTF-8オプションつけてコンパイルしたものがオススメ。
鬼車使ったことないから、どっちが良いとは言えないけど。
928 Name: 名称未設定 [sage] Date: 03/09/01 08:25 ID: tv9M+3K2 Be:
>915
Nibから作らないとAquaにならなかったと思うが。

>917さんも書いてるけど、プラグインはBundle形式じゃないの?
929 Name: 915 [sage] Date: 03/09/01 21:12 ID: mhCs1yO1 Be:
>>928
レスどうも。
CocoaBundleではなくて
ライブラリーっていう形式なんですよ。
(新規ターゲットから選べるやつ)

アイコンが"B"じゃなくて"L"になってます。

この形式でCocoa.hをincludeすると、obj-cに対応してないみたいで
コンパイルすると@とか[]の部分でエラーでまくりという状態で
今いろいろためしているところです。
昨日ためした限りでは、ライブラリーだとobj-cは対応してない様子です。

CocoaBandleとは、ライブラリーとはなんぞや?
というのを調べてみます。
930 Name: 名称未設定 [sage] Date: 03/09/01 22:13 ID: 0GgUF9oI Be:
>>929
えーと、Project BuilderがObj-Cに対応したコンパイルを
行なってくれるかどうかは、ソースファイルの拡張子で決まっていたはず。

問題のソースファイルの拡張子が".c"になってませんか?
".m"またはC++を併用するなら".mm"に変更してください。
931 Name: 名称未設定 [sage] Date: 03/09/01 22:57 ID: IbMeVQWB Be:
>>929
ライブラリって本来Carbonオンリーぽいのだが、、
何のソフトのプラグインなのか示せば話がはやいかも
932 Name: 915 [sage] Date: 03/09/01 23:41 ID: mhCs1yO1 Be:
>>ライブラリって本来Carbonオンリーぽいのだが、、

僕もそんな気がします。
ソフトは・・秘密にしておきますw
すいません。

>>930

mmにしてます。
エラーが出るのは上記問題のような気がします。

しかし、OSXのプログラミングはおもしろいですね~

933 Name: 915 [sage] Date: 03/09/02 01:15 ID: kZybqWeV Be:
みなさんどうもです。
結果報告。

コンパイルに成功し、読み込みもうまく行きました。
windowの表示はできませんでしたが・・w
(表示しようとはしているようです。読み込み時HOSTが重くなりました。)

どうもwindow描画のメソッドがおかしいようなので
荻原本見て勉強します。

あと一歩~
934 Name: 名称未設定 [sage] Date: 03/09/03 22:02 ID: 9WBe4EZj Be:
>>907
どーしても分からんかったら自前でピクセル触ったら?
そっちのほうが早そう
935 Name: 名称未設定 [] Date: 03/09/04 16:24 ID: D/ixHjRk Be:
スレッドセーフなキューを作ってるんですが、排他制御の方法で困ってます。
キューは
enum {
queueIsEmpty,
queueHasSpace,
queueIsFull,
};
という3つの状態を持ってます。
状態が2つなら、NSConditionLockを使えば簡単に排他制御が出来るのですが、
3つの状態を持つ場合にどうやれば排他制御が出来るのかが分かりません。

キューの容量を変化可能にすればqueueIsFull状態を無くすことは出来ますが、
動作が重くなってしまうので出来るだけ避けたいです。

よろしくお願いします。
936 Name: 名称未設定 [sage] Date: 03/09/04 16:40 ID: Mi9Yibzr Be:
>>935
Lockを増やす
937 Name: 935 [sage] Date: 03/09/04 20:04 ID: U2TVQR+M Be:
>936
ありがとうございます。ちょっと考えてみます。

>935 ちょっと条件が足りなかったので付け加えます。

Queue* queue;
id data = [queue dequeue]; // queueIsEmptyならデータが入るまでwaitをかける。
と、
[queue enqueue:data]; // queueIsFullなら空きができるまでwaitをかける。
です。

よろしくお願いします。
938 Name: 935 [sage] Date: 03/09/05 00:11 ID: d4S07o8T Be:
>936
考えてみましたが、デッドロックが発生しない方法を思い付けませんでした。(泣
とりあえず、queueIsFull状態をなくして、キューがいっぱいのときは例外を投げてごまかすことにします。
このすれは毎日チェックしてますのでどなたか良い方法があれば教えて下さい。
939 Name: 名称未設定 [sage] Date: 03/09/05 00:56 ID: KCe4m5Xn Be:
個人的には、というか普通の人にとっては
「なんとかピーク版とかいうのはいいから、リリース版を出してほしいなぁ」
というのが、今望んでいることだったりする。

でもまだ開発調整中だったらごめんなさい。
開発版をsourceforgeではなく2chで議論することに疑問を感じるところではあるけど…
940 Name: 名称未設定 [sage] Date: 03/09/05 01:01 ID: KCe4m5Xn Be:
Cocomonarスレと間違えた。
941 Name: 名称未設定 [sage] Date: 03/09/05 01:40 ID: ezIjTJMK Be:
t
942 Name: a beginner [sage] Date: 03/09/05 09:50 ID: BA/i6WJ9 Be:
IBでカーボンアプリも作成できる様ですが
それはクラシック環境でも動くのでしょうか?

よろしくお願いします。
943 Name: a beginner [sage] Date: 03/09/05 09:53 ID: BA/i6WJ9 Be:
追伸:
ココアでクラシックで動くアプリがいちから作れるか、ということです。
944 Name: 935 [sage] Date: 03/09/05 12:38 ID: BOUxdYER Be:
>943
残念ながらCocoaはクラシック環境では動きません。
Carbonで作成したとしてもProject BuilderがCFMバイナリを生成できませんので、
やはりクラシック環境での動作は出来ません。
古いCodeWarrior等を使ってCFMバイナリを作れば
Nib+Carbonでかつクラシック環境で動作するアプリケーションが作成可能です。
(最新のCodeWarrioirはMach-Oバイナリしか生成できません)
945 Name: a beginner [sage] Date: 03/09/05 18:09 ID: BA/i6WJ9 Be:
>>944
丁寧なレスありがとうございます。
クラシック用アプリの開発環境は現行ではREALBasicぐらいということでしょうか。
946 Name: 名称未設定 [sage] Date: 03/09/06 01:09 ID: VHHJOKZJ Be:
>>944
> 最新のCodeWarrioirはMach-Oバイナリしか生成できません
間違い。
http://www.metrowerks.com/MW/Develop/Desktop/Macintosh/Professional/mac9
947 Name: [] Date: 03/09/06 02:31 ID: AT0Bahd7 Be:
ながーい計算を途中中断するのに、データを一時保存したいのだが
アプリケーション独自形式のデータをファイルに書き出す方法を
だれか教えて。
入門書だと、ドキュメントベースにしてテキストを出し入れする
例題ばっかで、document.nibが無い例が無い。
ググッてみても、さっぱりわからん。

デバッグのことを考えて、テキストコメントとデータで
セーブデータを作るつもりなんだけど
変にCocoaにコダワリすぎ?
948 Name: 名称未設定 [sage] Date: 03/09/06 02:54 ID: sLyZd4pI Be:
NSDataにしてwriteToFile
949 Name: [sage] Date: 03/09/06 03:48 ID: AT0Bahd7 Be:
NSArchiverでNSDataを生成すると書いてあるのを見たけどちんぷんかんぷん


たった今までNSDataはNSDocumentの継承だと勘違いしていた、、、
調べなおしてみます。
Cocoaはやっぱりワカンネー
950 Name: 名称未設定 [sage] Date: 03/09/06 09:14 ID: //38hyxl Be:
>>949
セーブデータを格納するオブジェクトを作って、
それにNSCodingプロトコルを実装させる。

ここが参考になるかと。
ttp://www.stripe-net.jp/cocoa/cocoa/foundation3/foundation3-2.html
951 Name: 944 [sage] Date: 03/09/06 09:20 ID: 2vqBcRYB Be:
>946
指摘ありがとう。
http://www.metrowerks.co.jp/Products/Desktop/MacXE.html
これが最新版だと思ってた。機能限定版だったのね。
952 Name: 名称未設定 [sage] Date: 03/09/08 02:35 ID: oYdQ9pyG Be:
cocoaで画像の変形をしたいのですが。良いサンプルコードは無いでしょうか。
サンプルコードさえあれば後は自学自習しますんで
953 Name: 名称未設定 [sage] Date: 03/09/08 02:39 ID: CXbuqi0Z Be:
画像の変形って?
フーリエ変換とかでいいの?
954 Name: 952 [sage] Date: 03/09/08 02:41 ID: oYdQ9pyG Be:
追記
アフィン変換で、例えば台形をした画像を、正方形に変形する事はできるのでしょうか?
955 Name: 952 [sage] Date: 03/09/08 02:50 ID: oYdQ9pyG Be:
>>953
フーリエ変換でということは、画像の周波数成分から特定の値をとるとか
フォトショップのフィルタみたいなってことですかね?

フォトショップの編集メニューにある自由変形みたいなことがしたいのです。
956 Name: 名称未設定 [sage] Date: 03/09/08 02:51 ID: R+3AwMjP Be:
>>952
むしろ、台形かどうかを判定する方が難しいような。
変形は簡単にできるけど。

http://developer.apple.com/samplecode/Sample_Code/Cocoa/Transformed_Image.htm
957 Name: 952 [sage] Date: 03/09/08 03:32 ID: oYdQ9pyG Be:
>>956
ありがとうございます
ソース見てみます。
958 Name: [] Date: 03/09/09 00:58 ID: +nwA3XPk Be:
>948,950
Thanxすこしだけ進んだけど、やっぱり詰まってしまった。

たとえば、任意バイナリを読むときに
1:unsigned char Buffer[1024];
2:NSData* Data1 = [[[NSData alloc] autorelease] initWithContentsOfFile: [ openPanel filename ] ];
3:[Data1 getBytes:Buffer length:1024];
とか、いきなり読み込んで、
データをゴニョゴニョしてから書き戻そうとしてるんだけど。
4:NSData *Data2=[NSData alloc];
5:[Data2 initWithBytes:Buffer length:1024];
6:[Data2 writeToFile:[ @"~/xxx" stringByExpandingTildeInPath] atomically:YES]
で、書き込みがうまく行かない
6のところでBAD_ACCESSになってしまう???
あと、3の所でファイルサイズの分だけコピーするにはどうしたらよいのでしょ?
959 Name: 名称未設定 [sage] Date: 03/09/09 02:05 ID: pZuWLBw7 Be:
>>958
5でinit...の返り値を受け取ってないよ(NSDataはクラスクラスタ)。

>あと、3の所でファイルサイズの分だけコピーするにはどうしたらよいのでしょ?
- [NSData length]でバイト数がわかる。
てか、NSMutableDataで読み込んで、[NSMutableData mutableBytes]使えば?
960 Name: 名称未設定 [sage] Date: 03/09/09 02:14 ID: HE6It75g Be:
画像ビューワを作ろうと思ったんですが、最大化ボタンを押した時に

・画像サイズに合わせたサイズになる
・画面サイズ以上に大きくはならない

という動作をさせようと思うんですけど、画像のサイズはともかく、
画面のサイズはどうやって入手したら良いんでしょうか?
961 Name: 名称未設定 [sage] Date: 03/09/09 03:22 ID: oKY8amQK Be:
[ @"~/xxx" stringByExpandingTildeInPath]

文字列定数にメッセージ・・・んなら、いっそのことパスをまんま書いちゃえば
962 Name: 名称未設定 [sage] Date: 03/09/09 03:24 ID: oKY8amQK Be:
>>960
NSRect screenRect = [[NSScreen mainScreen] frame];
963 Name: 名称未設定 [sage] Date: 03/09/09 08:11 ID: iK3vNGeB Be:
>958
>NSData* Data1 = [[[NSData alloc] autorelease] initWithContentsOfFile: [ openPanel filename ] ];
[[[hoge alloc] autorelease] init]ってありなの?
特別な理由が無ければ[[[hoge alloc] init] autorelease]が安全かと。

4,5もNSData *Data2=[[NSData alloc] initWithBytes:Buffer length:1024];
とするべき
964 Name: 名称未設定 [sage] Date: 03/09/09 09:00 ID: KiEjpc+9 Be:
>958

>963に関して。
前半はまあ、ありではあるよね。ただし、オートリリースされないけど。
でも後半は完全にダメだよね。

例えばこういう実装もありなのよ。
-(id)init
{
[self release]; // 自分自身を解放。
return [[MySubClass alloc] init]; // サブクラスのインスタンスを返す。
}

NSDataとかNSStringとかのクラスクラスタは上の様にinit...で
必ず自分のサブクラスのインスタンスを返します。
ですから、必ずinit...メッセージの返値を受け取らなくてはいけません。

2,の場合は、init...で解放される一時インスタンスに対してオートリリースをかけて、
実際に使用されるインスタンスにはオートリリースが掛かってませんから、リークします。
965 Name: 名称未設定 [sage] Date: 03/09/09 12:34 ID: UgRW6Y9u Be:
>>961

~/xxxは実行時までどのように展開されるか決まりません。
だからパスをまんま書くことはできません。
966 Name: [] Date: 03/09/09 12:41 ID: SN5jR2wm Be:
ありがとうございます。
>963,964
2:NSData* Data1 = [[[[NSData alloc] init] autorelease] initWithContentsOfFile: [ openPanel filename ] ];
3:[Data1 getBytes:Buffer length:[Data1 length]];
4:NSData *Data2;
5:Data2 = [[NSData alloc] initWithBytes:Buffer length:[Data1 length]];
6:[Data2 writeToFile:[ @"~/xxx" stringByExpandingTildeInPath] atomically:YES]
こんな修正で、データを読んでから書き戻すのに成功しました。
正しいのかどうか自信無いです。

>961
とりあえず手持ちのiMacとPowerBookでアカウント名が違うのに対応したつもりだたのだです。

>959
> てか、NSMutableDataで読み込んで、[NSMutableData mutableBytes]使えば?
Buffer変数の型をMutableDataにするということでしょうか?
MutabaleDataにファイル読み込むときもNSData経由ですよね?

あと、プロジェクトがだんだn大きくなってくると、buildに異様に時間がかかるように
なってきました。今のMac(G3-400)には荷が重いようです。
ProjectBuilderにG4の効果はありますか?部屋が狭いんで、iBookG3-900くらいで
手をうちたいのですが。(H"が刺さらんか)
967 Name: 名称未設定 [sage] Date: 03/09/09 13:40 ID: at1cWoqC Be:
iBookだHDDが確かATA33なんでビルドが遅く感じるかも。
PowerBookにしる。
968 Name: 967 [sage] Date: 03/09/09 13:41 ID: at1cWoqC Be:
×iBookだHDDが
○iBookだとHDDが
969 Name: 名称未設定 [sage] Date: 03/09/09 14:22 ID: KiEjpc+9 Be:
>966

> 2:NSData* Data1 = [[[[NSData alloc] init] autorelease] initWithContentsOfFile: [ openPanel ilename ] ];
こうじゃなくて
NSData* Data1 = [[[NSData alloc] initWithContentsOfFile: [ openPanel ilename ] ] autorelease];
こうだべ。理解できなかった?

> とりあえず手持ちのiMacとPowerBookでアカウント名が違うのに対応したつもりだたのだです。
NSString *NSHomeDirectory();
を使うように。

> MutabaleDataにファイル読み込むときもNSData経由ですよね?
NSMutableDataはNSDataのサブクラスじゃ!
つうことです。
970 Name: Kusakabe Youichi [void@merope.pleiades.or.jp] Date: 03/09/09 23:01 ID: aGXZMgFL Be:
今だ!970ゲットォォォォ!!
 ̄ ̄ ̄ ̄ ̄∨ ̄ ̄ ̄    (´´
  ヘ_ヘ   )      (´⌒(´
ミ ・ ・ ミ   )   (´⌒(´
(  ° )~≡≡≡(´⌒;;;≡≡≡
   ̄ ̄  (´⌒(´⌒;;
      ズザーーーーーッ
971 Name: 名称未設定 [] Date: 03/09/09 23:45 ID: pN8SOKiO Be:
Cocoa関連検索してたら出てきたんだが、この考え方って正しいの?
ttp://www.fastwave.gr.jp/diarysrv/trinity/200309a.html#20030909-2
972 Name: 名称未設定 [sage] Date: 03/09/10 01:25 ID: Y8g7Iah+ Be:
>>971
「動的確保したメモリブロックはfreeで必ず解放せよ」って言いたいのかな?

/*
MLでこの話題が出ると果てしなく荒れ続けるよなw
メモリブロックからOSの実装まで発展して不毛極まりない論争になる。
これと双璧を成す起爆剤トピックが「fopen後は必ずfclose」
*/

973 Name: 名称未設定 [sage] Date: 03/09/10 01:46 ID: 3gJ2qtrW Be:
>>971
AutoreleasePoolは{}による変数のスコープとは別のオブジェクトのライフタイムのスコープを導入する。メソッドの戻り値をautoreleaseすることによって、一時的なオブジェクトを気兼ねなく返すことができる。

- (id) method {
id result = [[[MyObj alloc] init] autorelease];
[result ...];
return result; //result変数はここで破棄されるが、オブジェクトは生きてることが保証される
}

id pool = [[NSAutoreleasePool alloc] init];
id result = [obj method];
[result ...];
[pool release]; //ここまでresultは生きてる

これに関連してObjective-Cでメソッドの戻り値のオーナーシップはcopyみたいに指示がない場合、どれもautoreleaseされてると考えるべき。

C++のスタック上のオブジェクトはポインタとして関数に渡すときに危険。
{
int x;
obj->setPtr(&x);
} //*xのポイント先が破棄される。このあとにobjがsetPtrで設定されたポインタを参照しようとすると不定
C++で楽にメモリ管理するなら↓みたいなのがいいと思う。
http://www.borland.co.jp/qanda/lang/l0003025.html

ってこんな感じであってる?
974 Name: 名称未設定 [sage] Date: 03/09/10 02:36 ID: Ipd3Rmyd Be:
>971
導入部は別に間違ってないと思う。
オーナーシップに関する理解がなければ簡単にリークしちゃうと思う。

メソッドの戻り値のオーナに関して明記されてないとあるが実はキチンと明記されている。
ここ
http://developer.apple.com/documentation/Cocoa/Conceptual/ObjectiveC/4objc_runtime_overview/chapter_4_section_2.html

#ここには>966氏が理解してない +alloc... と -init... が不可分であることもきちんと明記されている。

御覧の通りこれはObjective-Cのお勉強の資料です。
彼はObjective-Cのお勉強もしっかりやらずにうんちく垂れてるわけですね。
975 Name: 974 [sage] Date: 03/09/10 02:49 ID: Ipd3Rmyd Be:
って、ちょっとまて。
>966氏はよく見たらすごいことやってるな。
NSDataを確保して、初期化して、自動解放して、初期化したわけか。。。
ここまできたら、もう一回自動解放してみるのがいいかも。。。
976 Name: 名称未設定 [sage] Date: 03/09/10 14:31 ID: HRQvxoap Be:
>>971

自分が生成したオブジェクトは自分で削除する。

自分が生成したのでないオブジェクトをランループを超えて
保持し続けたいのであれば、retainする。

retain(かalloc)したオブジェクトのreleaseは忘れない。
retainしていない(かallocしていない)オブジェクトはreleaseしない。

自分でreleaseできない場合や他のオブジェクトなどへ渡す場合には
autoreleaseする。

つまり、他のオブジェクトメソッドの返り値で受け取ったオブジェクトは
factoryメソッドなどの明示されている場合を除き、autoreleaseされて
いると思ってつかう。

このサイトの作者はまだオーナー湿布ポリシーを理解していない。
977 Name: 名称未設定 [sage] Date: 03/09/10 16:48 ID: neWZY+QA Be:
ちょっと前にmacosx-dev-jpMLに出てたけど、
オブジェクトはかならず
myObj=[[[Obj alloc] init] autorelease];
で確保して、
欲しくなったら必ずretain、releaseするっていうのが
よく分かってない人(例えば>971氏)には分かりやすいんじゃないか?

分かればそんな難しいもんじゃないんだけどね。
978 Name: 名称未設定 [sage] Date: 03/09/10 18:05 ID: IcsQ4bO0 Be:
問題の本質を理解しましょう。
JavaにはGCがあるし、C++ではスタックオブジェクトやスマート
ポインタを使えばオブジェクトの廃棄は自動的に行われる。
これに対しAutoreleasePoolを使った手動参照カウントはプログ
ラマが考えて参照カウントを調整しないといけない。
> 自分が生成したオブジェクトは自分で削除する。
> 分かればそんな難しいもんじゃないんだけどね。
はJava/C++の自動廃棄に比べてミスの危険が常に付きまとう。
AutoreleasePoolはお手軽だけど古くさい仕組みだということ
979 Name: 名称未設定 [sage] Date: 03/09/10 19:07 ID: l5+OBUpz Be:
皆さん>>978に対しては冷静な対応をお願いします。
(できれば反応しないのが安全かと)
980 Name: [] Date: 03/09/10 21:43 ID: GbQyCWIJ Be:
規制でかけなかったよ。
>967
G3 or G4よりもHDDか。
FirewireDiskを増設すれば改善する?とかちょっと思ったけど、
テンポラリファイルは結局システム側なのでダメポ。
新型も待ちたいけれど、我慢できないぽい。

>969
スンマセンでした。参考になります。
NSMutableData ドキュメント読んでます。

>975
理解してないのはメモリ周りだけじゃないってことで。(T_T)ノシ
たとえば、
-(NSString *)description
{
NSString *result=[[NSString allloc] initWithFormat:@"=%d",Number];
[result autorelease]; //releaseが必要
return result;
}

-(NSString *)description
{
return [NSString stringwithFormat:@"=%d",Number];//自動解放される
}
と言われても、何をたよりに区別していけばよいやらさっぱり
981 Name: 名称未設定 [] Date: 03/09/10 22:03 ID: jwKs/3Mb Be:
NSTableViewに列を追加するときは、Interface Builderで出来ますが、
コードを書いて動的に列を追加するにはどうしたら出来るのでしょうか?
982 Name: 名称未設定 [sage] Date: 03/09/11 00:21 ID: RKqJ6G2X Be:
NSTableDataSourceを実装したオブジェクトをdataSourceに指定
http://developer.apple.com/documentation/Cocoa/Reference/ApplicationKit/ObjC_classic/Protocols/NSTableDataSource.html#//apple_ref/occ/cat/NSTableDataSource
983 Name: 982 [sage] Date: 03/09/11 00:26 ID: RKqJ6G2X Be:
ごめん、上のは行の制御だ。
列は
- addTableColumn:
- removeTableColumn:
- moveColumn:toColumn:
- tableColumns
- columnWithIdentifier:
- tableColumnWithIdentifier:
あたりか。
前にとりあえず試しただけで実際に実用品を作ってるわけじゃないから
いいかげんだけど。
984 Name: 警戒宣言 [sage] Date: 03/09/11 01:28 ID: aG4bViZS Be:
次スレを急いで!
985 Name: 名称未設定 [sage] Date: 03/09/11 12:10 ID: uv6x7W5b Be:
>>980

allocを使って生成したオブジェクトは自分がオーナーなので、いらなくなったら解放する>NSString *result=[[NSString 『allloc』] initWithFormat:@"=%d",Number];
allocを使わないで生成した(正確には生成してもらった)オブジェクトは自分がオーナーではないので、解放する必要はない
>return [NSString stringwithFormat:@"=%d",Number]

あるオブジェクトを使用し続けたい場合はretainして、いらなくなったらreleaseする、っていうのは理解してるよね?
allocで生成するとすでに一度retainされている状態なので、いらなくなったらreleaseしなくてはいけないということ。
stringwithFormatの方はNSStringクラスがallocで新しいオブジェクトを作ったあと適当なタイミングでautoreleaseしているので、retainされていないオブジェクトが出てくるという感じかな。

基本的には
allocの回数+retainの回数==releaseの回数+autoreleaseの回数
でメモリリークはないことになる。
と思う。
986 Name: [] Date: 03/09/11 22:29 ID: VdM09J4K Be:
>985
メモリ管理の基本がなんとなくあやふやな理解なので、
さらっと
NSString *result=[[[NSString allloc] stringwithFormat:@"=%d",Number] autorelease];
とか書いてしまいがちなうっかりさんということなのでつ。
987 Name: [sage] Date: 03/09/11 23:23 ID: UFMc21xH Be:
Cocoaはさっぱり!!! Version.3

Cocoaはやっぱり!を見て真似してソフトを作ったは良いが、
オリジナルを作ろうと思ったら、全然その先に進めない人集まれ!

親切なプログラマーさんが暇なときだけ教えてくれてる(よね?)

前スレ
Cocoaはさっぱり! http://pc.2ch.net/mac/kako/1007/10076/1007632025.html
Cocoaはさっぱり!version:2 http://pc.2ch.net/test/read.cgi/mac/1007632025/l50

関連スレは >>2

プログラム関連スレ
Macでプログラミング{3} http://pc.2ch.net/test/read.cgi/mac/1049070432/
MacでC言語 http://pc.2ch.net/test/read.cgi/mac/1048587374/
MacOSX Java総合スレッド http://pc.2ch.net/test/read.cgi/mac/1047361032/
「AppleScript,Perl,Shell」OS Xでスクリプトスレ http://pc.2ch.net/test/read.cgi/mac/1055091471/
Mac OS XをUnixとして使ってる人の為のスレ その5 http://pc.2ch.net/test/read.cgi/mac/1055874672/
XCode ② http://pc.2ch.net/test/read.cgi/mac/1061702196/
参考リンク
HAPPY Macintosh Developing TIME!
ttp://homepage.mac.com/mkino2/

Cocoa Developer Documentation
http://developer.apple.com/documentation/Cocoa/Cocoa.html
file:///Developer/Documentation/Cocoa/CocoaTopics.html

Cocoaはやっぱり!
ttp://www.big.or.jp/%7Ecrane/cocoa/
988 Name: [sage] Date: 03/09/11 23:31 ID: uK94yB1o Be:
>このホストでは、しばらくスレッドが立てられません。
繋ぎ変えてもだめぽ。
スレたて、だれかおねがいします。
989 Name: 名称未設定 [sage] Date: 03/09/11 23:40 ID: RKqJ6G2X Be:
チャレンジします
990 Name: 名称未設定 [sage] Date: 03/09/11 23:43 ID: RKqJ6G2X Be:
ダメでした、他の人ヨロ
991 Name: 名称未設定 [sage] Date: 03/09/12 00:00 ID: QACoJ0KQ Be:
チャレンジ:レスポンス
992 Name: 名称未設定 [sage] Date: 03/09/12 00:41 ID: 8ue/kw6d Be:
じゃ、建てるよ。
993 Name: 992 [] Date: 03/09/12 00:52 ID: 8ue/kw6d Be:
建てました。

Cocoaはさっぱり!!! Version.3
http://pc.2ch.net/test/read.cgi/mac/1063295248
This page was generated by Dat2HTML Rev.