07/11/11 12:09:17 /h9pnLX90
Cocoaで開発しているとつい構造体の存在を忘れてしまうけど、
データ構造を解りやすく表現する手段として重要だよね。
(KVCやDictionaryだと規模が大きくなると大変)
そんな時にpropertyの登場。うれしいけど下位互換性を保てなかったものか....
601:名称未設定
07/11/11 23:54:16 3xiFJV1b0
構造体使ってると、PPC/Intelで整合性がとれなくなるよ...
602:名称未設定
07/11/12 00:02:37 6pJx53410
CPUに依存するコードを書くから。
603:名称未設定
07/11/12 00:16:22 6YN+nfcu0
エンディアンですか
604:名称未設定
07/11/12 00:18:23 jJlBa7Hw0
べつに構造体つかってもいいんじゃない?ちゃんとディスク/ネットワークに書くときに気をつければ。
605:名称未設定
07/11/12 00:41:11 bRgWt6KB0
>>601
そろそろ答えをお願いします。
606:名称未設定
07/11/12 01:52:24 6qKNkZiA0
オブジェクト指向はどこへ消えた
607:名称未設定
07/11/12 06:44:56 t+THQgiE0
質問します。たとえばQuickSilverみたいに、どんなアプリが動いていても
起動してくれるショートカットキーの設定って、どうやるのでしょうか?
システム全体のキーボードイベントをフックして実装するのかと想像してるのですが
そういうイベントを受け取る方法を見つけられませんでした。
キーボードとかマウスとかフォーカスとかのシステムイベントをフックする
方法ってあるんでしょうか?
608:名称未設定
07/11/12 06:55:13 inGQ9CFd0
QuickSilverってのは知らんけど、自分のアプリが手前になくても、特定のキーイベントを受け付ける方法としては
Carbon EventにHotKeyというのがある。
RegisterEventHotKey、kEventHotKeyPressed、kEventHotKeyReleased辺りを使う。
609:名称未設定
07/11/12 07:02:27 t+THQgiE0
>>608
ありがとう。さっそく試してみます。
610:名称未設定
07/11/12 09:06:28 1OnUOF+c0
エンディアン変換はAppleが用意してるのでそれ使えばいいだけだ。
注意しなければならないのは浮動小数点を中間コードに変換することくらいだな。
ディスクに書き込むのなら、構造体ではなくてXML使うようにしてるけどな。
611:名称未設定
07/11/14 11:18:15 n4OM99880
Cocoaにはデフォで複数行表示で左揃えなタブコントロールはないのか・・・
612:名称未設定
07/11/14 11:19:38 6xRVuEo90
そんな気持ちの悪いUIはいらん。
613:名称未設定
07/11/14 11:58:54 n4OM99880
まあ複数行表示なんてどうでもいいが
Safariのタブはなぜ標準提供されないのだろうか
614:名称未設定
07/11/14 21:09:56 +yEMUk1e0
AppleアプリのUIは継ぎはぎだらけなので真似するのが大変orz
だからRIUIを難しくしているような気がするけどな
615:名称未設定
07/11/14 22:16:14 KqpvVDcT0
3になってカバーフローとか簡単に出来るんかいな。
616:名称未設定
07/11/14 22:35:49 XnqPDGec0
Windows の Office の環境設定一度でも使った事ある人なら、
複数行タブの馬鹿らしさが分かる
617:名称未設定
07/11/14 22:46:16 iClwHio80
CGSGetOnScreenWindowListで取得したウィンドウに対して
CGSSetWindowLevelによりウィンドウレベルを設定しようとしています。
自アプリのウィンドウは変更されるのですが、
他アプリのウィンドウはエラーが返ります。
同じくTransitoinWindowでウィンドウを操作しようとしますが、
他アプリのウィンドウは操作出来ません。
どなたか他アプリのウィンドウを操作する方法をご存知ないでしょうか?
618:名称未設定
07/11/14 23:09:12 jAWzhafe0
他アプリのウィンドウの参照をどうやって取ったの?
619:名称未設定
07/11/14 23:12:58 jAWzhafe0
あああ、上のレスは忘れて
620:名称未設定
07/11/14 23:23:01 Xis7E2030
>>615
ソースが公開されているが読んでもよくわからん
621:名称未設定
07/11/15 00:45:47 GB5EBmPl0
>>609
QuickSilver オープンソースになったよ
blacktree-alchemy でぐぐれ
622:名称未設定
07/11/15 12:46:30 Mwb686F+0
時々Getterコードで
-(Foo*) foo
{
return [[foo retain] autolerease];
}
というコードを見るんだけど、何か意味があるの?
623:名称未設定
07/11/15 13:06:16 7a7zfmZx0
AutoReleasePoolが解放されるまでの間保持させるってことだろ。
624:名称未設定
07/11/15 13:08:13 woMNQIGU0
呼び出した後に元のクラスを解放することを想定してんじゃね?
625:名称未設定
07/11/15 13:29:39 9q45mP2D0
しかしCocoaのポリシーとしては、そういう場合はgetterを呼び出した側が(必要なら)retain-autoreleaseしなさいと言っているように見える。
URLリンク(developer.apple.com)
626:名称未設定
07/11/15 13:48:25 o0uKsE520
Leopardで刷新されたMac OS X対応開発言語「Objective-C 2.0」の真価を探る
URLリンク(journal.mycom.co.jp)
627:名称未設定
07/11/15 14:16:50 7a7zfmZx0
propertyのとこ、おかしくないか?
インスタンス変数がNSString * _name;だとエラーになるんじゃね?
628:名称未設定
07/11/15 18:06:34 yJVNynki0
プロパティとかブロック構文みたいのとか便利だと思うけどLeopard専用じゃあすぐには手を出しにくいなあ
記事にもあるけどせめて10.4くらいから動いてくれないと
629:名称未設定
07/11/15 19:42:11 7a7zfmZx0
Objective-C 2.0にするとTigerをサポート出来なくなるからな。後、2年くらいは
Tigerをサポートしたいし。
10.4.11でObjective-C 2.0のランタイムをサポートしてくれれば良かったのに。
630:名称未設定
07/11/15 22:27:57 OxRPElrt0
Xcode3ではなんと!!!!!!!!
@"あいうえお" が使える!!!!!!!
うれしい!!!!!!!
631:名称未設定
07/11/16 00:48:51 qefaGqef0
>>630
>@"あいうえお"
なにおきてもしらんど
632:名称未設定
07/11/16 08:32:57 oGZ+fjo20
>>625
>>622 と同じ例もあったりするけどね。
URLリンク(developer.apple.com)
どうなんだろうなあ。とりあえずコード的にはこっちの方がすっきりするが...
中がどうなってるか分からない getter から返ってきたオブジェクトはは常に retain
しなきゃいけないとすると、めんどくさいなあ。
633:名称未設定
07/11/16 11:47:44 N3h5kz0i0
>>632
信頼できないライブラリなら retain ではなく copy するべきかもね。
返された NSString が実は NSMutableString で、知らないうちに内容
が書き変わっていたりするかもしれんしw
634:名称未設定
07/11/16 12:09:30 cNV2hLUV0
>>632
GC 無し Cocoa では、init.... もしくは copy... 以外のメソッドから
返ってきた id を保持する場合は retain すべしという決まりになっていた
気がするんですが。
635:名称未設定
07/11/16 12:19:47 CbzyFQzY0
>>631
うそーん。なんで?
636:名称未設定
07/11/16 20:39:40 CUEn9uCm0
>>626に>>622と似たようなコードの例が載ってて、それはマルチスレッドに対応するためらしい。
似てると言っても結構違うけど。
637:名称未設定
07/11/16 21:36:04 tvhXsAYJ0
>>632
getter/setterの組み合わせで、ひとつのautorelease poolの中でdeallocされないようにする
ということが目的なので、リンク先のListing3-6・3-7のどちらかを選べばよいということだと思います。
3-6のgetterと3-7のsetterの組み合わせで書いてしまったりすると、getした直後にsetされるとアウト。
retainする必要があるのはautorelease poolのサイクルの外で取得したオブジェクトを使いたいときですよね。
インスタンス変数に保持するとか、別スレッドから参照するとか。
>>636
マルチスレッドもautorelease poolに関してのことだから同じ話だと思いますよ。
638:名称未設定
07/11/16 23:23:35 hGnpQD7r0
>>626とかみて今まで不思議だったんだけど、nilのオブジェクトに
メッセージ送っても安全なんですかね?
retainやreleaseはnilチェック無しでもOKなんですか?
639:名称未設定
07/11/16 23:44:09 U4RUIbsl0
>>638
問題ない。
ついでにいえば ヒレガス本 p44にそのまんま書いてある。
640:名称未設定
07/11/16 23:47:58 WI/houEB0
>>638
先越されたが、メッセージ送信自体は安全らしい。
URLリンク(developer.apple.com)
ところで>>626のリンク先にnilにメッセージ送ってるコードある?
641:名称未設定
07/11/16 23:52:36 OhjYmzCB0
ぬるぽ!
642:638
07/11/17 03:22:18 kGkshqIg0
>>639-640
ありがと。いままでnilチェックしてたわ。他の言語なら
余裕で落ちると思ったけど。結構アバウトに動くのね。
>>626は_nameの初期値がnilだろうから・・・いいのかな?って感じに。
643:622
07/11/17 09:00:15 aQOoTe4X0
>>623
>>624
ありがとう!。でもそういう使い方を,,,,,,するかも(ゾッ)
プログラムを見直してみよ
644:名称未設定
07/11/18 12:38:23 YFIOeH3f0
>>637
>ということが目的なので、リンク先のListing3-6・3-7のどちらかを選べばよいということだと思います。
そういうことを疑問に思っているんじゃなくて。
>retainする必要があるのはautorelease poolのサイクルの外で取得したオブジェクトを使いたいときですよね。
上の文は、「サイクルの外で」で切れるんだろうなあ。最初「外で取得した」と読めた。
ともかく、getter の中で何をやっているのかわからないときがあって(ソースのないクラスとか)、
そうするとオブジェクトが autorelease pool に登録されてるかよくわからないだろ。
645:名称未設定
07/11/18 13:27:12 xb1Ii9wH0
「よくわからない」、じゃなくて、
getter から返ってきたのをインスタンス変数等に
保持したい場合はretain しないといけない、
保持しないで今の関数で使い捨てのときはなにもしなくていい、
というのが「きまり」じゃないの?
getter はそう使われて問題ないように組みなさいということのはずでしょ。
すくなくとも Cocoa の API は全部そうなっているんでは。
ネットに落ちてるフリーのライブラリもそれに準拠してると思ってたけども。
URLリンク(developer.apple.com)
646:名称未設定
07/11/18 14:17:29 6Cn1RaWD0
>「よくわからない」、じゃなくて、
>getter から返ってきたのをインスタンス変数等に
>保持したい場合はretain しないといけない、
>保持しないで今の関数で使い捨てのときはなにもしなくていい、
>というのが「きまり」じゃないの?
そんな基本的なレベルの話じゃなくて、「今の関数で使い捨て」しようとしたときでも、
getterの直後に別スレッドでsetterが呼ばれて、(getterによって返された)古いオブジェクトが解放された
とか、
getterの直後に別スレッドが(そのgetterメソッドを持っている)オブジェクトを解放した
とかいうケースの話をしてるんじゃないの?
こんな場合にも対応するには、getterによって返されるオブジェクトがたとえ「今の関数で使い捨て」であったとしても、
それをautorelease poolに入れるというのが一つの手なんだけど、それを誰がやるのか、ってことでしょ。
647:名称未設定
07/11/18 14:49:43 xb1Ii9wH0
なるほど、それは失礼しました。
Cocoa のマルチスレッドは全く判っていないので、勉強します ...
648:名称未設定
07/11/18 15:17:43 6Cn1RaWD0
>getterによって返されるオブジェクトがたとえ「今の関数で使い捨て」であったとしても、
>それをautorelease poolに入れるというのが一つの手なんだけど、それを誰がやるのか、ってことでしょ。
で、getterを呼び出した側でretainしようにも、その前に別スレッドで解放されたら終わりなので、結局getter自身でretain-autoreleaseするしかないと。
てことは、thread-safeを謳っているライブラリについては、getter側でretain-autoreleaseしていることを想定していいのかなぁ?
649:名称未設定
07/11/18 21:52:08 MNuVJVruO
Cocoaは難しい
650:名称未設定
07/11/18 22:23:41 DA9RCPIX0
確かに安定したソフトを作るのは難しいかも
まあ、リソースを確保したままで終わるような簡単なソフトは簡単だけどね
651:名称未設定
07/11/19 15:27:16 02ojrBP20
Cocoaってそんなに難しいのか? 比較対象がToolboxしか知らんからわかんね。
652:名称未設定
07/11/19 15:38:10 LV7+iq+v0
Toolboxに較べたら簡単だろう。Toolboxみたいに冗長で神秘の呪文を何度も
唱える必要がないだけでもありがたいくらいだ。部品も結構揃ってるので
本来やるべき仕事の部分に集中出来る。
653:名称未設定
07/11/19 16:40:12 LvFFLwZ10
フレームワークの充実度で圧勝。
654:名称未設定
07/11/19 17:00:29 PeaucL070
Toolboxに比べる事自体Cocoaに失礼
655:名称未設定
07/11/19 17:44:27 In4q82oq0
Interface builder にでてくる File's Owner, 1st Responder というのを理解するまではわけわからんかったが、その後は楽勝だった
656:名称未設定
07/11/19 17:52:00 9E3IVsAz0
このスレ住人のXcode 3.0への移行具合はどうよ
XcodeでClassを書く(Interface BuilderでClassが作れない)
Interface BuilderでのAnimationが設定できる
などなど変更点山盛りで覚えること多数で苦戦してんだけど
657:名称未設定
07/11/19 17:55:48 In4q82oq0
確かに instantiate class... というメニューが
IB になかったからどうしようかしばらく困った。
でもこれまでからなぜか Xcode でクラス作ってたのでそんなに変わってないです。
あと自分用の小さなソフトしか作ってないので、
GC on にして手抜きしまくりです。
Animation のつかいかたは判ってないです ...
658:名称未設定
07/11/19 18:13:08 LV7+iq+v0
IBからクラスを生成するとヘッダやソースのコメントが抜けてさみしいので
大抵の場合クラスを作ってからIBでactionやらoutletにつなげてた。
さすがにXcode3.0には戸惑ったが、まぁ何とかなりそうだ。
659:名称未設定
07/11/19 19:00:01 PeaucL070
>>658
> Bからクラスを生成するとヘッダやソースのコメントが抜けてさみしいので
> 大抵の場合クラスを作ってからIBでactionやらoutletにつなげてた。
俺も同じw
660:名称未設定
07/11/19 19:55:30 dZtoqNKV0
InterfaceBuilder3.0では、
Main.nibの中にFile'sOwnerとApplicationっていうインスタンスが入っているけど、
これって同じもん?っていうか前はFile'sOwnerがIB上からのApplication
インスタンスへの入り口ってつもりだったんだが。。。
661:名称未設定
07/11/19 21:10:34 uwOj8SG90
MainMenu.nibの場合は、同じ。
662:660
07/11/19 21:51:45 9Yj++wrA0
>>661
ありがと。ってことはMainMenu.nib以外では、違うってことだろうか。
ちょっくら試してみます。
あと、IB3.0のライブラリには、いろいろ便利そうな新規クラスが
入っているみたいだけど、これらの使い方をどこかのスーパー
プログラマーがさっくりと分かりやすい日本語チュートリアル
作って公開してくんないかなー。(他力本願)
663:名称未設定
07/11/19 21:56:31 PeaucL070
URLリンク(journal.mycom.co.jp)
に、
- (NSString*)name
{
@synchronized(self) {
return [[_name retain] autorelase];
}
}
ってコードがあるけど、ここの@synchronizedの対象って_nameじゃダメなの?
664:名称未設定
07/11/19 22:01:37 MSo6PDwW0
それにしても独特な開発環境だよね
洞察力の訓練には最適かもw
665:名称未設定
07/11/19 22:34:43 KUTYWe1G0
>>663
setName:をどう書くか悩むからだめ。
666:名称未設定
07/11/19 23:08:49 +8DQ+G5D0
そういえばnilへのsynchronizeの挙動って定義されてたっけ?
667:名称未設定
07/11/20 12:18:19 xK/rJZ3Z0
>>662
File's Owner はその NIB を開いた際にプログラム側から nib's owner として登録されたオブジェクトになる。
MainMenu.nib は自動的に NSApp が開いて、File's Owner は NSApp。
ドキュメント型ソフトのばあいは、NSDocument が nib を開くので、
File's Owner は自分でつくった NSDocument のサブクラスになる。
それ以外に nib をつくって、自分でプログラムからあからさまに開く際は
File's Owner を自分で設定する。
668:662
07/11/20 19:03:19 vX1nP8Nx0
>>667
なるほど!っていうか初めてFile's Ownerの
役割が分かりますた。
簡潔且つ的確なご説明ありがとうございます。
669:名称未設定
07/11/21 20:17:19 G817xlPC0
- (BOOL)validateMenuItem:(id <NSMenuItem>)menuItem;
の中でmenuItemに対してsetState:とかtagを呼ぶと
'tag' not found in protocol(s)
とか言われてしまうんだけどなんでだろう?
670:名称未設定
07/11/21 22:56:41 sg+XtEJO0
知らんけど、NSMenuItemがプロトコルだからじゃね?
- (BOOL)validateMenuItem:(id <NSMenuItem>)menuItem;//引数menuItemはNSMenuItemプロトコル
- (BOOL)validateMenuItem:(NSMenuItem*)menuItem;//引数menuItemはNSMenuItemクラス
って事かなー。
671:名称未設定
07/11/21 23:17:07 hTxVVTev0
>>669
まずヘッダを確認してみてはいかがでしょう。
ウチのxCode2.4ではdeprecatedだけど一応使えるみたい。
672:名称未設定
07/11/22 00:53:05 NI+W3MNs0
ありゃ、プロトコル自体がdeprecatedだったのか
警告が「プロトコルの中にないよ」って書いてあるもんだから、
NSMenuItemプロトコルの中を見てちゃんとあるのに変だな~と混乱してた
失礼しました
結局>>670みたいに書き直しなさいということね
673:名称未設定
07/11/22 11:59:27 Krn36QQ60
質問です。
まずNSWindowのサブクラスMyWindowにNSViewのサブクラスMyViewが乗っています。
ここでMyWindowにinitWithContentRect:をオーバライドして、
中で[super initWithContentRect:...]と典型的な初期化をしているのですが
この引数に任意のrectを渡した場合にMyViewのサイズを合わせるにはどうすればいいのでしょうか。
IBでAutosizingを設定しても聞いてくれなくて。
674:名称未設定
07/11/22 17:12:56 kaRw/iTz0
行を選択するたびにそのイベンオをとらえて処理をしたいと考えてます。
- (IBAction)tableViewSelected:(id)sender
{
row = [sender selectedRow];
NSLog(@"the user just clicked on row %d", row);
}
そこで,上記では行を選択すると選択した行番号を得られるのですが,
行番号ではなくオブジェクトを得られる方法はありますか?
IBAction はCore Dataで作ったTableViewとAppDelegateでつないであります。
なので、クリックされた行のNSManagedObjectが得られるといいのですが,
直接的な方法はないものかと。
675:名称未設定
07/11/22 21:10:09 a/peNeZj0
NSArrayController 使って bind させればいいんじゃないの?
676:名称未設定
07/11/22 22:03:28 GA2XBdAS0
> まずNSWindowのサブクラスMyWindowにNSViewのサブクラスMyViewが乗っています。
> ここでMyWindowにinitWithContentRect:をオーバライドして、
> 中で[super initWithContentRect:...]と典型的な初期化をしているのですが
> この引数に任意のrectを渡した場合にMyViewのサイズを合わせるにはどうすればいいのでしょうか。
状況がいまいちよく分からないが、
MyWindowの上にMyViewが乗ってるっていうのは、IBで乗せてるの?
ならば、nibファイルからMyWindowが生成されるので、初期化にはinitWithCoder:が使われるはず。
initWithContentRect:でMyWindowを生成しているなら、手動でMyViewを乗せることになるはず、
IBでAutosizingを設定っていうのも、ちょっと変な気が。
677:名称未設定
07/11/22 22:22:26 Krn36QQ60
>>676
IBでMyWindowにMyViewを乗せています。
@implementation MyWindow
- (id) initWithContentRect: ...
{ NSWindow* w = [super initWithContentRect: ...]; return w; }
@end
のような記述をしていて、このときMyViewは手動で乗せなくても表示されています。
また、Autosizingでウィンドウに合うようにMyViewを―~~―な状態にしておけば、
ユーザがGUI上でリサイズをしてもMyViewのサイズが変わっています。
表示した後マウスでリサイズする分には問題が無いわけですが、
上記initWithContentRect:の中で任意のrectを指示した時に
初期のMyViewのサイズがIBで指示したサイズになってしまうのです。
これは手動でMyViewを生成するべきなのでしょうか?
678:名称未設定
07/11/22 23:50:05 T7a7mhhK0
>>677
awakeFromNibで設定するのが簡単だと思う。
679:名称未設定
07/11/23 00:34:54 1Oijf2vw0
>>677
IBでインスタンス化したオブジェクトはアーカイブされてnibファイルに格納されて
プログラムで読み込むときはアンアーカイブして取り出すので
初期化メソッドはプログラム中では呼ばれない
はず
nib上のオブジェクトを初期化するにはawakeFromNibを使いましょう
680:674
07/11/23 10:22:00 GeUHqHT60
>>675
どうも
NSArrayControllerを使ってBindするというのは、
具体的にはどうすればいいのですか?
NSArrayControllerのインスペクタのBindをみても
NSTableViewのクリック関する項目はないのですが。
681:名称未設定
07/11/23 10:49:36 hcJ8Hx2n0
NSTableView の binding のところで、中身を
NSArrayController の content とかに設定して、
NSArrayController のほうを CoreData につないでください。
ADC のどっかにチュートリアルがあったはず。
682:675
07/11/23 12:06:28 gHJ1tYgX0
>>680
行の選択が変化したかどうかは KVO で見る
NSArrayController の例えば selectionIndex とかを addObserver で登録して、
observeValueForKeyPath の中で、そのときに NSArrayController に
選択されている NSManagedObject を取り出す
683:674
07/11/23 12:37:53 GeUHqHT60
>>682
>>681
素早い応答ありがとうございました。
ADCのチュートリアルを教えてください。
Core Data Programming Guideをみたり
table view bind で検索しましたが,
それらしいものが見つからなくって。
まだまだ初心者なので,インスペクタの設定や
サンプルコードがないとピンとこなくて。
すいません。
もしサンプルプロジェクトをダウンロードできるサイトがあったら
教えてください。
684:名称未設定
07/11/23 12:51:39 hcJ8Hx2n0
英語だけど、apple のこれ
URLリンク(developer.apple.com)
はビデオ付き。まさに tableview につないでるから。
あと、Scott Stevenson の
URLリンク(cocoadevcentral.com)
もわかりやすい。
というかそこの記事はどれもこれもわかりやすいので、おすすめ。
あと、mkino さんのところにも解説ありそうだけど、どうでしょう?
すくなくとも本の第三版にはのってるらしいけど、持ってないのでわからん。
685:名称未設定
07/11/23 13:02:19 iA/8JIe10
binding ってバカを量産する仕組みなんだろうか
686:675
07/11/23 13:08:18 gHJ1tYgX0
>>683
table view の bind じゃないです
MVC のパターンにして
M: Core Data
V: NSTableView
C: NSArrayController
で、それらの間を binding で結んで、table の変化を見るのではなくて
NSArrayController の selection の変化を見る、ということ
で、NSArrayController の selection の変化は key value observing で見る
アプリケーション本体の方には NSTableView ではなく
NSArrayController の方をつないで、そこに選択されている
NSManagedObject を取り出せば、それが NSTableView で
選択されている NSManagedObject と同じものになります
サンプルコードはわからないけど、ドキュメントなら、
Core Data Programming Guide 以外なら
Cocoa Bindings
URLリンク(developer.apple.com)
Key Value Observing
URLリンク(developer.apple.com)
とか
687:名称未設定
07/11/23 15:23:08 NQ+7IO3Q0
>>685
自分の頭の中のCocoaはbindingが導入される前で止まってるw
未だに使った事が無い恐がりの俺
688:名称未設定
07/11/23 15:40:43 vBC4oFan0
bindingとpropertyは職業プログラマ用だろ。
garbage collectionは量産しそうだけど、いいんでない?
689:名称未設定
07/11/23 16:07:53 hcJ8Hx2n0
>>687
binding は Panther で追加された頃は IB での扱いがひどかったけど、
(設定しても反映されない等、)最近は随分安定している気がする。
690:名称未設定
07/11/23 16:08:47 40+P0Y410
>>688
いや、Bindingだけは素人でもきちんと使えるようにすべき
MVC、KVCできちんと書けるようになるからな
691:名称未設定
07/11/23 17:45:45 /aNuome90
メモリ管理をあまり理解しないまま、KVCを使っていると知らない間に
大量のメモリリークを生みだしそうな気がする
まあ、GC前提なら問題ないけどね
692:名称未設定
07/11/23 19:05:51 gj7dOudc0
>>689
俺未だにPanther使ってるけど、そんなことないぞ。