Cocoaはさっぱり!!! version.7

このエントリーをはてなブックマークに追加
944名称未設定:2007/05/07(月) 16:50:27 ID:p0jqMaWl0
ていうか、retain/releaseはObjCの言語仕様とは関係ないんだってば
945名称未設定:2007/05/07(月) 18:38:15 ID:VMC1T3Pu0
>>944
NSObjectを使わないObjCって...
946名称未設定:2007/05/07(月) 18:48:55 ID:oPNrofLO0
autorelease使えないよ。
インクリメントしてるだけだから、複雑な処理の場合には、いつまでもリリースされずにメモリ食いまくり。
947名称未設定:2007/05/07(月) 19:49:23 ID:Uvqucy/k0
>>946
autoreleaseを使えっていうのは半分冗談です。
メモリ食いはNSAutoreleasePoolで対処できるけどね。
948名称未設定:2007/05/09(水) 11:38:25 ID:jsw1JMvK0
>>946
>autorelease使えないよ。
>インクリメントしてるだけだから、複雑な処理の場合には、いつまでもリリースされずにメモリ食いまくり。

循環参照していないだろうか?この場合、リファレンスカウンタでは開放できないくなっちゃいます。

また、大きくメモリを消費する処理には、それ用のNSAutoreleasePool を用意しておけばいい。
949名称未設定:2007/05/09(水) 12:54:42 ID:18iNnjUF0
ついでに突っ込むとautoreleaseはデクリメント(のことだよな?)してないぞ
950名称未設定:2007/05/11(金) 00:39:29 ID:S5BefFFq0
見えないけどインクリメントされてたはず。
過度にリリースすると落ちるのが証拠。
951名称未設定:2007/05/11(金) 16:49:14 ID:AUdZh5Gs0
>>950
インクリメントは「増やす」、減らすのはデクリメント
正確に言うとautoreleaseした時点ではリファレンスカウントは減らなくて
ただAutoreleasePoolに登録されるだけ
で、AutoreleasePoolが解放される時に、登録されたオブジェクト全てに対して
releaseを呼び出す、という形になっている
はず

まあautorelease=デクリメントで大体合ってるけどね
952名称未設定:2007/05/11(金) 17:14:21 ID:9AVlIKsJ0
GCの意味が分からん
捨てちゃいけないもん捨てちゃったらどうするんだ
953名称未設定:2007/05/11(金) 17:41:37 ID:S5BefFFq0
もちろんエラーでOSもろとも落ちるよ。
だからC言語って危険。
954名称未設定:2007/05/11(金) 18:03:59 ID:oXeq4Vqt0
あなたたち、本気で言ってるの?
955名称未設定:2007/05/11(金) 19:10:40 ID:I4NhRwky0
捨てちゃいけないものを捨てるようなヤバいGCなんてないよ。
C言語とGCは何の関係もないし。
956名称未設定:2007/05/11(金) 22:39:41 ID:n2Vzjy3X0
GCは楽チンで超便利。
GCのおかげで背が伸びて彼女が出来ました。
957名称未設定:2007/05/11(金) 22:58:55 ID:1RRhddDN0
C言語用の某 GC ライブラリの mac 版は
静的領域を破壊してくれるバグがあってハマった
958名称未設定:2007/05/12(土) 00:41:12 ID:0DAftqx50
「必要なくなった」ってどやって判断すんの?
またいつ必要になるか分からんじゃん!
959名称未設定:2007/05/12(土) 00:54:30 ID:XQ40pFCM0
やあ、あなたは片付けられない症候群の人ですね。
960名称未設定:2007/05/12(土) 01:09:18 ID:vgDhCNpj0
>>957
そこで「某」と書くのは理由があるの?
961名称未設定:2007/05/12(土) 02:58:12 ID:aUw7jLTh0
わざわざ正式名を出す理由がないから
962名称未設定:2007/05/12(土) 09:02:39 ID:d1tsLHVh0
まあ、メモリ管理は無理してでも覚えたほうが良いよ
ついでにC++を一緒に覚えるとなお良い
963名称未設定:2007/05/12(土) 09:08:25 ID:BrtsGvua0
>>958
ネタかい?
どこからもアクセスできなくなったら「必要なくなった」ってことだろ。
まあ実際はそんなに単純ではないがな。
964名称未設定:2007/05/12(土) 10:51:55 ID:1nuw6i340
テーブルビューで行を選択すると、その行の色が反転して背景が青になりますが、
選択しても色が変わらない(表示が全く変わらない)ようにすることはできますか。
(選択できなくする、というのでもいいですが)

もう1つ、テーブルビューのある列のヘッダをクリックすると、その列がソートされて
そのヘッダの背景の色が青くなりますが、ここも、クリックしてソートはしても、
ヘッダの背景の色はそのまま変わらない、というようにすることはできますか。

要するに、テーブル上で何か操作しても、見た目がまったく変わらないように
したいのです。
965名称未設定:2007/05/12(土) 11:14:43 ID:DftWHHom0
>>962
C++なんて憶えなくていいよ
966名称未設定:2007/05/12(土) 11:19:35 ID:iIMSf5JT0
>>964
>(選択できなくする、というのでもいいですが)

-(BOOL)tableView:(NSTableView *)tableView shouldSelectRow:(int)row;

>クリックしてソートはしても、
>ヘッダの背景の色はそのまま変わらない、というようにすることはできますか。

できるが、ソートの処理は自分で書く必要がある。
967名称未設定:2007/05/12(土) 15:51:41 ID:zX70/krq0
クリックしてソートした(された)後でヘッダビューのハイライトを消せば?
行の選択も同様に。
968名称未設定:2007/05/12(土) 15:54:02 ID:zX70/krq0
または、
ttp://mattgemmell.com/source/
ttp://mattgemmell.com/files/source/itablecolumnheader_screenshot.png
を参考にヘッダを自前で描くとか。
969964:2007/05/13(日) 15:51:31 ID:+UFxOVrc0
>>966-968
できました。ありがとうございました。

ついでながら、
NSTableColumn に、コードから attributes や formatter を設定するには、
どのようにすればできるでしょうか。

InterfaceBuilder で「左詰め」「右詰め」、数字や日付のフォーマットを
NSTableColumn に設定するのと同じことを、コード上でやりたいのですが。
970名称未設定:2007/05/13(日) 18:52:57 ID:fwGlIQEx0
>> 952
GCは、オブジェクトが他のオブジェクトから参照されなくなったら、オブジェクトが解放される。
ただ、それだけ。
retain/(auto)releaseと違うのは、こういう参照カウントやオブジェクトのマーキングを
システムがやってくれるわけだ。オブジェクトが解放されるタイミングは、システムが
勝手にやるから、なーんにも気にする必要はありません。

便利だろう?
971名称未設定:2007/05/13(日) 19:39:35 ID:zMxgkGBh0
http://www.big.or.jp/~crane/cocoa/1000_webKit/noProgBrowser/index.html
を見ながら同じようなものをMacOS10.4.9/Xcode2.2.1で作ろうとしたのですが、WebKitを使ったアプリを実行すると、以下のログを出して止まってしまいます。

[Session started at 2007-05-13 19:38:32 +0900.]
2007-05-13 19:38:34.210 MiniBrowser[4080] An uncaught exception was raised
2007-05-13 19:38:34.210 MiniBrowser[4080] *** -[NSKeyedUnarchiver decodeObjectForKey:]: cannot decode object of class (WebView)
2007-05-13 19:38:34.210 MiniBrowser[4080] *** Uncaught exception: <NSInvalidUnarchiveOperationException> *** -[NSKeyedUnarchiver decodeObjectForKey:]: cannot decode object of class (WebView)

MiniBrowser はシグナル 5(SIGTRAP)により終了しました。

超初心者ですが解決策を教えていただけないでしょうか。
972名称未設定:2007/05/13(日) 19:54:25 ID:0ntCk5BN0
Webkit.frameworkをプロジェクトに追加した?
973名称未設定:2007/05/13(日) 21:28:00 ID:zMxgkGBh0
>>972
プロジェクトにWebKit.frameworkを追加した際、「デネーショングループのフォルダに項目をコピー」してしまったのが原因でした。
助かりました。ありがとうございます。
974名称未設定:2007/05/13(日) 21:59:17 ID:habiHiaf0
java bridgeについて、教えてください。

[NSJavaVirtualMachine defaultVirtualMachine];
id arrayList=[[NSClassFromString(@"java.util.ArrayList") alloc] init];
[arrayList add:@"stingValue"];
NSLog(@"value 1=%@",[arrayList get:0]);

上記の様なコードで、結果を得る事はできましたが、
public なコンストラクタが無い場合は、どうすればいいのでしょうか。
例えば、Charset#forName(String charsetName)みたいな場合です。
975名称未設定:2007/05/16(水) 16:18:52 ID:5XpwjZah0
Mac の API って Unicode 扱える?
UTF-8? 16?
976名称未設定:2007/05/16(水) 17:17:33 ID:XnRywkSm0
どっちもおけ。えんでぃあんも。
977名称未設定:2007/05/16(水) 17:50:37 ID:5XpwjZah0
おお、すごいね。
978名称未設定:2007/05/16(水) 18:44:47 ID:RUegA9bD0
「MacのAPI」が何を指すのかにもよるだろ。
Toolbo(ry
979名称未設定:2007/05/16(水) 19:02:58 ID:bn17HlFy0
時々はText Encoding Converterのことも思い出してあげてください。
980名称未設定:2007/05/16(水) 19:30:51 ID:gBJZ6oQq0
>>978
ATSUIやFile ManagerやUnicode UtilitiesのUnicodeサポートが無いと
GUIレイヤは動けないよ。
あと徐々にICUも使う様になってるから、これもUnicode APIの一部だ。
981名称未設定:2007/05/16(水) 23:27:40 ID:bnwwfg1l0
ディレクトリの中身を全部調べてバイト数を出したいのですが、
サブフォルダの中身までの全てのNSDataを返すようなことって
無理なんでしょうか?
982名称未設定:2007/05/17(木) 00:35:04 ID:zmeb2Yaq0
手間を厭わなければ可能なんじゃないかね
983名称未設定:2007/05/17(木) 02:00:21 ID:KspWSed10
バイト数調べるのにいちいちNSData作ることないじゃん
984名称未設定:2007/05/17(木) 07:53:49 ID:7vBb1wYu0
リソースの画像ファイルや音声ファイルなどを隠蔽して
ユーザーがアクセスできないようにするにはどうしたらいいでしょう?
985名称未設定:2007/05/17(木) 09:18:42 ID:4YfC39v6O
ユーザのレベルによる。
986名称未設定:2007/05/17(木) 10:32:22 ID:o9IsuCCQ0
リソースマネージャリソースにすれば今どきのユーザには開けまい
987984:2007/05/17(木) 10:40:34 ID:czqOaVhJ0
とりあえずパッケージを開いた時にファイルが取り出せない様に、と考えていました。
リソースマネージャリソースぐぐってみます。
988名称未設定:2007/05/17(木) 10:55:48 ID:HX67BV0m0
パスワード付きのZIPとか。
989名称未設定:2007/05/17(木) 11:12:51 ID:lSSaEaVj0
ZIPなんてヤワなパスワード付けたら簡単に破られるし、起動も遅くなる。
リソースってのはいいかもしれないな。IntelMacだとClassic環境がないから
ResEditは使えないし、Resorcererがないと中を見ることが出来ない。
カスタムリソース作るのも簡単だしな。
990名称未設定:2007/05/17(木) 12:01:14 ID:fgoaspiG0
Cocotronってどうよ?
991名称未設定:2007/05/17(木) 14:58:28 ID:kOYOmMk4O
何ヶ月か前に全く同じレスを見た
992名称未設定:2007/05/17(木) 17:40:32 ID:w4V8jFQv0
でも実際のところ、>>987みたいなケースに備えて
リソースの暗号化みたいな機能があると嬉しいかな。
中身はAES暗号化されていて、loadするときに鍵が必要だとか。

もともとフレームワーク自体がもっさりしてるから、復号化のオーバーヘッドとか
そんなに気にならんと思うし。
993名称未設定
Carbon rsrcにするぐらいなら、Mach-Oのセグメントに入れるとか。