Cocoaはさっぱり!!! version.8at MAC
Cocoaはさっぱり!!! version.8 - 暇つぶし2ch250:名称未設定
07/08/20 00:06:56 sNRA//U50
>>245
PukiWikiなら設置してある。
放置気味だけど。
URLリンク(cocoawiki.aerial.st)

251:名称未設定
07/08/20 03:27:37 VX9jayCX0
NSOpenGLViewが複数あるとき,一個のViewの方でpickしたら
もう一個のViewが描画されなくなるんだけどなんでだろう。
glRenderMode(GL_SELECT);

gluPickMatrix
を実行しないと問題無い。

その後は
glRenderMode(GL_RENDER);
にちゃんと戻している。



252:名称未設定
07/08/20 09:02:13 XvOlYfuG0
>243
実際あの指摘は正しいんだろか?
初心者の漏れにはサパーリわからんのだけど。

253:名称未設定
07/08/20 22:17:07 t64RIRSP0
>>252
サパーリな奴が、指摘が正しいかどうかだけ知って何の役に立つ?


見たところ、デザインパターン自体からは多少逸脱して、
ObjC/Cocoaでの類似の機能やその実現の説明に入りかけているように見える。
これはこれで見えてくるものがあるはずなので今後の展開に期待。
ご本人もあえてそういう感じの意識で連載をしているようだ。

Commandに関しては最初の方でNSDocumentを例に使っているので、
今後もその流れでいくのかな。

最終的に「Cocoaパターン」とでも呼べるものが出来上がったら面白いなあと思う。
し、もしかするとそんな将来の著作も狙ってたりして。

254:名称未設定
07/08/20 22:23:05 t64RIRSP0
なんだ、ADCサイトに既に元ネタちっくなものがあるじゃないか...
あとはそれをどこまで膨らませて(いい意味で)書けるかだなあ。

255:名称未設定
07/08/20 22:27:39 t64RIRSP0
連投すまん。>>254のことはデザパタ関連の連載の最初にすでに断ってあった。
だから本人もそれを単純に踏襲したものにならないように書いてる筈だと期待。

256:名称未設定
07/08/20 22:30:46 XG0wpyE80
え?
期待してんの?


257:名称未設定
07/08/20 22:31:52 m/MJ9Do70
アクセス数の多いサイトの、本来は何の関係もないページトップのエントリに対して、
わざわざ自分のサイトへのリンクを記載してコメントするのはちょっと気が引けるな。俺は。
なんか宣伝みたいになっちゃうじゃん? 「こんな鋭いツッコミする俺ってどう?」みたいな。
ある程度気心の知れた常連さんみたいだし、そういう意図はないんだろうけど。
といいつつ、話の展開は気になる。

258:名称未設定
07/08/21 07:51:32 6qziaugl0
>253
>サパーリな奴が、指摘が正しいかどうかだけ知って何の役に立つ?

フツーに野次馬なだけです

259:名称未設定
07/08/21 20:44:58 68zc4QPq0
QTKit についての質問です。サンプルコードの'QTKitCreateMovie' の通りに
CreateMovieStorage を使ってNSImage からQTMovieを作ったのですが、
画面左上にQTMovieが予期せず表示されます。
Technical Note TN2138 をみると、同じ事例なのかどうかは分かりませんが、
FAQとして似たようなものが載っていましたので、gworld を作成し、
CreateMovieStorage の直前に入れました。
が、相変わらずQTMovieの最後のフレーム?が表示されます。
Expose などで画面の再描画が行われると消えるのですが、気持ちが悪いので、
解決策をお教えください。
Movie qtMovie = NULL;
GWorldPtr gworld = NULL;
Rect rect = {0, 0, 1, 1};
NewGWorld(&gworld, 32, &rect, NULL, NULL, 0);
SetMovieGWorld(qtMovie, gworld, NULL);
CreateMovieStorage(…
とやってます。
URLリンク(developer.apple.com)


260:名称未設定
07/08/22 11:48:33 09zetXWR0
>>259
SetMovieGWorld は CreateMovieStrage の後なんじゃね?
qtMovie が NULL の状態で SetMovieGWorld しても意味ない気がする。

Movie 作っても表示はされなくて、インスタンス化してから表示されるんじゃないか?


261:名称未設定
07/08/22 13:46:57 JadCL/7H0
>>260
ありがとうございます。仰る通りにCreateMovieStrage(…) の後に SetMovieGworld(…) を
やってみましたが、同じ結果でした。
で、関係する関数を調べてみたんですが、NewGWorld(…) が OSX10.4 で廃止されていました。
コンパイルエラーも実行時エラーも出てなかったので通っているものとばかり…
代わりの関数って何になるんでしょうか?
もちろん自分でも調べてみますが、ご存知でしたらお教えください。

262:名称未設定
07/08/22 14:11:21 fw6+crbU0
廃止?廃止予告じゃないの?

263:名称未設定
07/08/22 21:59:05 dvhT81p60
>>261
というか、関数のエラーチェックをしてないのでは?
どこで引っかかっているかはきちんと確認したか?

そのケースは普通GWorldがきちんと出来ていないか
Setではねられているかどちらかでは。

264:259
07/08/23 00:56:08 xQ3xY0pg0
>>262
廃止予告なんですか、知りませんでした。最近始めたばかりなんで良く分かってないんです。
勉強になりました、ありがとうございます。

>>263
ありがとうございます。
GWorldは出来ている…とおもいます。NewGWorld() の後で値を持っているので。
SetMovieGWorld の直後に GetMovieGWorld をやってみたのですが、返って来た GWorldPtrが
gworld と違っています。Set出来てないって事なんでしょうね。ということは、gworldがちゃんと
出来てないって事なんでしょうか??うぅ…Cocoaの勉強しかしてないので全く分からない…
GWorldPtr gworld = NULL;
GWorldPtr ggwrld = NULL;
Rect rect = {0, 0, 1, 1};
NewGWorld(&gworld, 32, &rect, NULL, NULL, 0);
SetMovieGWorld(qtMovie, gworld, NULL);
GetMovieGWorld(qtMovie, &ggwrld, NULL);

お手数をおかけしました。
作った QTmovie 自体はちゃんと書き出せているのでちょっと我慢して、もう少しQuickTime、
QuickDraw(これからはQuartz2Dの方が良いのかな?)を調べてからもう一度チャレンジしたいと
思います。アドバイスして下さった方々、ありがとうございます。

265:名称未設定
07/08/23 08:39:50 MFvh7UHN0
既に解決していたらよけいなお世話だが、
ちょっと最初のソース>>259を見ていて気になったんで、、、
SetMovieGWorldで設定しているqtMovieは実際描画を行っているQTMovie
(こっちはQTKitの方ね)を指している?

CreateMovieStrageはQTKitの関数ではなくTraditionalなQuickTime
の関数なので、どこかでこのStorageをQTKitのQTMovieに変換する
ためにmovieWithQuickTimeMovieとかを呼んで実際に描画をしている
QTMovieを作っているはずなんだけど、このパラメータとして使って
いるMovieに対してSetMovieGWorldをやらないと意味ないよ。

実際の所CreateMovieStrageに対応するQTKitの関数が無いのが問題
なんだけどね、いまQuickTimeに手を出すのはカオスに手を出すよう
なものだから必要に迫られていないのならばQTKitがもう少し充実す
るまで待った方が良いような気がする。


266:名称未設定
07/08/23 09:28:42 b2guyxFU0

QTKitは試していないけど

URLリンク(lists.apple.com)



267:名称未設定
07/08/23 09:58:55 7IM/N5ND0
>>265
それだね。QTKitCreateMovieのサンプルソース見ると
quicktimeMovieFromTempFileでストレージを作る際に
新規Movie構造体を一緒に作って、かえってきたMovieを
使ってQTMovieインスタンスを生成してる。

別のMovie構造体にセットしてもそりゃだめだな。

268:259
07/08/23 11:59:41 xQ3xY0pg0
>>265, 266, 267
おおおぉ、ありがとうございます!解決致しました。
quicktimeMovieFromTempFileから返って来たMovieについて、SetMovieGWorldをかけ
QTMovieを作ったら見事に消えました。厚くお礼を申し上げます。

>いまQuickTimeに手を出すのはカオスに手を出すようなものだから
確かに、そんな気分になりました…こういうのが carbon の世界なんでしょうか?

何はともあれ、つきあって下さった皆様本当にありがとうございます。

269:名称未設定
07/08/23 13:14:35 MFvh7UHN0
>>268
Carbonの世界はCarbonの世界で悪くないよ。Appleは終息方向に向かいたいみたい
ですけどね。

単にQTKitが未完成でTraditionalな関数を呼ばないと実現できない事が多すぎて、
何をやるにもちょこちょこCarbonが顔を出すので、CocoaからQuickTimeにアプロー
チするのが「カオス」。

Carbonだけで閉じた世界で使う分には「今の所」QuickTimeは普通に使える。将来
は逆にCocoaに手を出さないと機能が使い切れなくなると宣言されてるけどね。

まあ、Carbonはここではすれ違いだ。失礼しました。


270:名称未設定
07/08/23 16:40:07 tUB6r9Qr0
てことでObjective-C2.0のQTKitに期待なわけですね。

271:259
07/08/23 18:29:02 xQ3xY0pg0
>>269, 270
なるほど、Carbon からは QuickTime が使い易いんですね。
Leopard の QTKit が使い勝手よくなっていることに期待します。
後2~3ヶ月か。うーん早く出して欲しいなぁ。

272:名称未設定
07/08/24 13:00:09 plQI0uRV0
>>269

判ってると思うけど、QuickTimeはCarbonじゃ無いよ。
GWorldとは手を切って、OpenGL Contextに移行しよう。

273:259
07/08/24 17:12:35 9ylc1pF50
>>272
これは私宛(>259)、ですよね。この辺り分かっていないんで、間違っていたら教えて頂けますか。
周囲に聞ける人がいないので、Appleの文献とネットしか(ヒレガス本と荻原本はよんでます)
情報が無いんです。教えて君状態で申し訳ないのですが、よろしくお願いします。
1.SetGWorldはQuickDrawのメソッドで廃止予定。Quartz2Dが代わりになる。
2.Quartz2D (CoreGrahicsの一部?), CoreImage, CoreVideo, CoreGraphicsの下にOpenGLがいる。
3.QuickTimeは3つの上にあって、描画対象や処理に応じて3つのAPIを使っている?
4.3つのframeworkはそれぞれOpenGLの一部の機能を提供?OpenGL非依存の処理も可能?
5.CocoaからはQuartz2D CocoaAPIを介してOpenGL Contextが作れる?(一番分かってないです)
という風に理解しているのですが、合っていますか?

274:名称未設定
07/08/24 18:05:34 plQI0uRV0
Creating a Visual Context
URLリンク(developer.apple.com)

QTNewGWorld => QTPixelBufferContextCreate or QTOpenGLTextureContextCreate
Visual Contextは、普通のメモリーか、OpenGLのテクスチャ。

SetMovieGWorld => SetMovieVisualContext

CIVideoDemoGL
URLリンク(developer.apple.com)


以下僕も曖昧ですが。
Quartz2D: PDFベースの描画命令。QuickDrawの後継。2D ExtreamならGPU使う。
CoreImage: GPU使った画像処理フィルター。テクスチャに施す。
CoreVideo: 複数のテクスチャをバッファプールに使ってムービーの表示タイミングをモニタのリフレッシュに合わせる仕組み(Display Link)。

要はみんなテクスチャなんでGPUの中だけで相互にいじれると。

275:名称未設定
07/08/24 20:07:50 jUBSvJSS0
CoreVideoPixelBufferってGLテクスチャだけでなく、
GWorldのラッパも兼ねてると思ってた。

RGBでないDecompressor/CompressorComponentは2vuyを
デフォルトでつかうから、結局一発目のCoreVideoPixelBufferは
GWorldベースになっちゃうはず

QuickTimeのyuvデフォルトはChunky yuv=2vuy(422)で、PlanerYUVじゃ
ないからPixelBuffer間の変換処理がぼこぼこ起きると遅くなると思う

Sharkで見ると、いったんChunky yuv422ー>Planer yuv444ー>RGBとか
やってるっぽい
CoreVideoが、DisplayLinkの途中でGLテクスチャに変換してるん
だろうと思うんだけど、すごく無駄が多く感じるんだよね



276:名称未設定
07/08/25 01:30:41 VopUGkEZ0
>>275
MyCometG3氏と見た。

277:259
07/08/25 19:15:58 NJSbpzvW0
>>274,275
うーん、覚えないといけない事がいっぱいですね…一つずつ学びたいと思います。
ありがとうございました。

278:名称未設定
07/08/28 07:04:19 zHr/kI630
初歩的質問で申し訳ないのですが、NSString文字列の
制御文を書きたいのですが、どのようにすればいいのでしょうか。

NSString* hoge;
hoge=@"あいうえお";

if (hoge =@"あいうえお") {
//もしhogeの内容が あいうえお ならここのコードを動作させたい
}

のように書いたのですが、if の行でエラーが出てしまいます。


279:名称未設定
07/08/28 07:09:19 Xv9pLU0Y0
>>278

if (hoge isEqualToString:@"あいうえお") {

280:名称未設定
07/08/28 07:11:51 lNlMIRDY0
朝からcocoa
いいね素晴らしいね

281:名称未設定
07/08/28 07:16:01 zHr/kI630
>>279
分かりました。勉強不足でした。

ありがとうございます。

282:名称未設定
07/08/28 12:58:25 y/omrr0P0
>>279
@""の中に日本語はまずくないですか?

あえてソースの中に日本語書くのならエンコードをutf8にしておいて、

if ( [hoge isEqualToString:[NSString stringWithUTF8String:"あいうえお"]] ) {

}

くらいでは。

283:名称未設定
07/08/28 13:13:32 rN2eIabO0
>>278
この例だと、>>278が意図したようには動かないが、エラーも出ないのでは。

284:名称未設定
07/08/28 13:28:47 qboyE3Nc0
オブジェクト定数に日本語使ったからエラー出たんじゃね?

285:名称未設定
07/08/28 13:54:14 p7clQF4e0
その前に条件式内での代入は不問なの?

>のように書いたのですが、if の行でエラーが出てしまいます。
どんなエラーかも分からないし。

286:名称未設定
07/08/28 15:04:49 y5W8OHwo0
パールや簡易系スクリプト上がりだと苦労するよ。オブジェC。


287:名称未設定
07/08/28 15:42:39 KiMzdaU00
CocoaDevCentralあたりにPHPからの移行チュートリアルみたいなのあった気がする。
英語だが。

288:名称未設定
07/08/28 15:57:17 qboyE3Nc0
うそん
俺AppleScript上がりだけどすんなり理解できたよ、ObjC

289:名称未設定
07/08/29 03:40:32 QhQnuPQW0
Cocoa初心者です。
ヒレガス本(日本語版)は、済ませました。
次にやると良い入門書があれば、ご紹介ください。


290:名称未設定
07/08/29 13:43:03 6vtaxeAX0
>>289
何を作りたいの?

291:名称未設定
07/08/29 19:40:33 mCpcDP8p0
テーブルビューでコアデータにバインドしないカラムのソート方法がさっぱりです。

ソート用にそのカラムの配列を作ってソートディスクリプタをかますのですか?

292:名称未設定
07/08/29 19:50:19 sxJk1+Ic0
NSTableView の - (NSArray *)sortDescriptors;
NSMutableArray の - (void)sortUsingDescriptors:(NSArray *)sortDescriptors;
がヒントというか殆ど答え。

293:名称未設定
07/08/29 20:15:26 FVUVQ2w00
NSTextFieldについて質問させてください

Interface Builderの設定でLayoutがWrapsの場合(Viewの幅で自動改行)に、
横幅を変えずに高さだけ変えてテキストがちょうど収まっているように
プログラムでリサイズさせるにはどうしたらいいでしょうか?

[NSControl sizeToFit]だと横幅が変わってしまいます

294:名称未設定
07/08/30 01:39:01 8W/XnYIW0
>>291
URLリンク(blog.so-net.ne.jp)

295:名称未設定
07/08/30 01:47:09 8W/XnYIW0
>>293
IBのインスペクタのサイズで,
NSTextFieldのサイズを上下にリサイズするように設定してみては.
上下にはバネ,左右は直線の表示に.

296:名称未設定
07/08/30 02:23:58 zfQNQU460
>>294
そこに書いてあることは間違ってるとは言わんが
すごく誤解を招きそうな感じの書きっぷりになってるな

297:293
07/08/31 00:21:20 coa9p3Qi0
>>295
ダメでした。IBの「Size to Fit」メニューではAutosizing設定に
合わせてくれるんですが、プログラムでは

[textField setStringValue:@"とても長~~~~い1行"];
[textField sizeToFit];

としても横に長く伸びてしまいます

298:名称未設定
07/08/31 03:54:43 k2mfVNs40
>>297
NSTextFieldのsetLineBreakMode:でラップするよう設定してみては?
詳しくはリファレンス参照.

299:293
07/08/31 23:09:17 coa9p3Qi0
自己解決しました。これでできそうです。

NSRect fr = [textField frame];
fr.size = [[textField cell] cellSizeForBounds:[_textField bounds]];
[textField setFrame:fr];

300:名称未設定
07/09/01 17:23:27 V20HLbnL0
>>292 >>294
回答ありがとうございます。
チャレンジしてみます。

301:名称未設定
07/09/02 16:01:51 1W/RX5JH0
NSTableView(NSArrayController)で最後にソートしたカラムとソート順をアプリの終了時に保持して、
次回起動時に前回の状態でソートするにはどうすればよいのでしょうか?

[[[NSArrayController sortDescriptors] objectAtIndex:0] description]

をNSStringに代入してプロパティリストに保存できたのですが、
なんか無理矢理なやり方かなと。

良い知恵がありましたらお願いします。

302:名称未設定
07/09/02 17:36:24 QfZEBWjg0
自分で変数もってそれをプロパティリストに保存して起動時にソートしなおすとかは?
とNSTableView使ったことないけど言ってみる

303:名称未設定
07/09/02 23:43:35 BsNs+MD5P
descriptionで保存するんじゃなくて、sortDescriptorsにNSArchiver使った方がいいんじゃない?
で次回起動時にはNSUnarchiverを使って復元したものをsetSortDescriptors:して再ソート

304:名称未設定
07/09/03 01:24:15 d9shAoB60
ass乞食がcocoaのhtmlレンダーマンを掘り当てたらしいね

305:名称未設定
07/09/03 01:34:14 J1vhJrBi0
中国人は赤ん坊も食べる
URLリンク(www21.tok2.com)


306:名称未設定
07/09/07 21:36:25 EENbuIBN0
ああ、さっぱりわからないよ兄さん。

307:名称未設定
07/09/11 23:43:45 8nKQQObl0
NSPredicateで" カラム=='値' "というのはできるのですが、
" 関数の返り値=='1' "みたいなことは出来るのでしょうか?
よろしくお願いします。


308:名称未設定
07/09/12 20:54:55 0PGJU/k/0
またHMDT恒例の、エントリ無関係ツッコミが始まりましたな。

309:名称未設定
07/09/12 21:50:19 f0yZ2CXF0
>>307


オブジェクトobj の関数(メソッド)func が数字を返すとき、

BOOL result = [[NSPredicate predicateWithFormat:@" func == 1"] evaluateWithObject:obj];

みたいなこと?そのまんまだけど



310:名称未設定
07/09/13 09:13:13 tYOZKWhg0
Core Dataを使って、非常に簡単なアプリを作ろうとしています。
単語帳みたいな感じのものなんですが、
Cardエンティティ:
- 属性word (String)
- 属性meaning (String)
というデータを持っています。
例えば、(word, meaning) = ("hello", "こんにちわ")みたいに格納します。

さて、wordの表示は左側にNSTableColumnでリスト表示させ、
その右側にNSScrolViewでselectされた単語の意味を表示させます。
このとき、NSScrolViewから意味を編集したいのですが、
この中身を日本語のプレインテキストにしたと思っています。
属性meaningのタイプはStringのままでいいのでしょうか。
Stringにすると、実行時に右側のNSScrolViewを編集することができなくなります。

そこでタイプをバイナリデータにしてみたんですが、
当然、作成されたXMLの中身がバイナリになって可読性が悪くなります。
タイプをStringのままで、NSScrolViewを編集できるようにするにはどうしたらいいでしょうか。

311:名称未設定
07/09/13 10:03:32 tYOZKWhg0
すいません。
ごにょごにょやってたら出来ました。
何をやったのかは分かりませんorz

312:名称未設定
07/09/14 03:22:19 vPRPlLH90
まず、NSScrollViewから編集したつもりになってるようだけど、
実際はNSScrollViewの内部にあるNSTableViewから操作している。
NSScrollViewはスクロールを可能にするだけの縁取り的なものに過ぎない。
だからもしリファレンス等で調べるなら、
NSScrollViewではなくNSTableViewを参照すること。

次に、保存方法と編集可能云々は別問題なハズ。
Interface BuilderでNSTableViewのインスペクタのEditableとか
いろいろいじったんじゃない?

313:名称未設定
07/09/14 11:37:14 gUdBg/zp0
今回発売されたLogic 8は1000p以上の翻訳済みマニュアル付いてるそうな
世界同時発売で

で、Cocoaリファレンスの翻訳はまだですか?

314:名称未設定
07/09/14 13:29:15 sFJVO0iJ0
>>313

Cocoa Break

315:名称未設定
07/09/14 18:33:16 ZI20taVc0
cocoa breakは神

316:310
07/09/14 20:03:38 5NLP9ylV0
>>312
NSScrollViewは勘違いでした。
どこを弄ったのか良く分からなかったので、
何度か新規でプロジェクトを作り直したりしたら動いています。
今は何と何をバインディングさせたか理解してるんで、
ちゃんと正しいことをやってるくせぃ。

317:名称未設定
07/09/14 23:10:21 +9nlJNpQ0
俺をAppleで働かせてくれるなら死ぬ程翻訳しまくってやってもいい
とほざく求職中の俺

318:名称未設定
07/09/17 21:49:27 5CFLrUlr0
日本語入力 �フ 英語入力 をアプリの中から切り替えるには、どうすれば
よいでしょうか。

URL を入力するテキストフィールドがあって、そこが入力状態になったときに
自動的に英語入力に切り替わるようにしたいと思っています。


319:名称未設定
07/09/17 22:47:37 vp+tEm1m0
たぶんそういうのはCarbonの中の古いAPIを使うんじゃないかな

320:名称未設定
07/09/19 12:44:09 QAAMlS8c0
Core Dataで名前と住所があるとして、NSTableViewで表示させるとします。
で、カラムは名前と住所を表示させるんだけども、
住所が未入力の人は名前を赤で表示させたい。
これってどうやればいいんでしょうか。

321:名称未設定
07/09/19 16:00:49 7OHnYPwj0
>>320
●NSTableView に delegate を設定して tableView:willDisplayCell:forTableColumn:row: の中で、
住所の中身を調べて名前のセルに setTextColor する。

●もしくは、下記の2つのファイルを作り、プログラムのどこか最初の方で(applicationDidFinishLaunching等の
メッセージを受けて)、以下のように

MyValueTransformer* transformer = [[[MyValueTransformer alloc] init] autorelease];
[NSValueTransformer setValueTransformer:transformer forName:@"MyValueTransformer"];

独自の値変換を登録しておく。Interface Builder では、名前カラムのbindins -> textColor -> Value Transformer に設定しておく。

322:名称未設定
07/09/19 16:01:37 7OHnYPwj0
長過ぎて怒られたので分割。

//---------- MyValueTransformer.h ----------
#import <Cocoa/Cocoa.h>

@interface MyValueTransformer : NSValueTransformer {

}
+ (Class)transformedValueClass;
+ (BOOL)allowsReverseTransformation;
- (id)transformedValue:(id)value;

@end

323:名称未設定
07/09/19 16:02:40 7OHnYPwj0
//---------- MyValueTransformer.m ----------
#import "MyValueTransformer.h"

@implementation MyValueTransformer

+ (Class)transformedValueClass {
return [NSColor class];
}

+ (BOOL)allowsReverseTransformation {
return NO;
}

- (id)transformedValue:(id)value {
if ( value != nil && [value respondsToSelector:@selector(length)] && [value length] > 0 )
return [NSColor blackColor];
else
return [NSColor redColor];
}

@end

324:名称未設定
07/09/19 16:09:53 7OHnYPwj0
念のため名前カラムの Bindings の中ね。

Bind to: NSArrayController
Controller Key: arrangedObjects
Model Key Path: (住所の入っているプロパティ名)
Value Transformer: MyValueTransformer

325:320
07/09/19 20:31:54 QAAMlS8c0
>>321
まんま使わせてもらいました。
ありがとうございます。

- (void)applicationDidFinishLaunching:(NSNotification *)aNotification;
をHoge_AppDelegate.hに足して、
- (void)applicationDidFinishLaunching:(NSNotification *)aNotification
{
WordColorTransformer* transformer = [[[WordColorTransformer alloc] init] autorelease];
[NSValueTransformer setValueTransformer:transformer forName:@"WordColorTransformer"];
}
をHoge_AppDelegate.mに足しました。

初めてD&D以外の作業をXcodeでやったわw
C/C++しか触ったことないんだけど、Cocoaの思想みたいなもんが見えてきた。
これは便利そうだ。

326:320
07/09/19 20:36:30 QAAMlS8c0
すいませんが、もう1つ。

名前カラムに新規登録する度に、
headerを押さないでも自動でソートさせるのは、
どうすればいいんでしょうか。

327:名称未設定
07/09/20 01:30:49 r/uaSxxr0
>タップ……指で軽く叩く操作。マウスのクリックに相当
>ダブルタップ……2回叩く操作。ダブルクリックに相当
>ドラッグ……写真を移動する時に指をずらす操作
>フリック……リストをスクロールする時に指で軽くはらう操作
>ピンチ……2本指でのつまむ操作の総称
>ピンチアウト/ピンチオープン……2本指の間を広げて拡大する時の操作
>ピンチイン/ピンチクローズ……2本指の間を縮めて縮小する時の操作
URLリンク(k-tai.impress.co.jp)

- (void)touchFlicked:(NSEvent *)theEvent;
とかになるのかな?

328:名称未設定
07/09/20 11:06:40 CMoMWviD0
>>326
とりあえず思いつくのは notification を使うことかな。

IB で Hoge_AppDelegate に Outlet を2つ追加して接続。ここでは仮に arrayController(NSArrayController に接続)と
tableView(NSTableView に接続)としておく。

Hoge_AppDelegate.h に追加。

IBOutlet NSTableView *tableView;
IBOutlet NSArrayController *arrayController;

Hoge_AppDelegate.m を修正。

- (void)applicationDidFinishLaunching:(NSNotification *)aNotification {
MyValueTransformer* transformer = [[[MyValueTransformer alloc] init] autorelease];
[NSValueTransformer setValueTransformer:transformer forName:@"MyValueTransformer"];

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(objectChanged:) name:NSManagedObjectContextObjectsDidChangeNotification object:nil];

NSArray* sortDescriptors = [NSArray arrayWithObjects:
[[[NSSortDescriptor alloc] initWithKey:@"name" ascending:YES] autorelease],
[[[NSSortDescriptor alloc] initWithKey:@"address" ascending:YES] autorelease],
nil
];
[tableView setSortDescriptors:sortDescriptors];
}

- (void)objectChanged:(NSNotification*)notification {
[arrayController rearrangeObjects];
}

329:名称未設定
07/09/20 11:12:40 CMoMWviD0
>>326
dealloc の中で後始末もしておいて。一応、マナーとして。

[[NSNotificationCenter defaultCenter] removeObserver:self];

330:名称未設定
07/09/20 22:29:15 A01fsnmG0
iPhone、iPod に OS X を内蔵したおかげで、Cocoaプログラマがすごい増えてるね

331:名称未設定
07/09/20 23:33:41 Xhf7l+HF0
>>330


332:名称未設定
07/09/21 00:21:45 Qi2gwohZ0
>>326

NSArrayControllerのsortDescriptorsを設定してあれば、自動的にソートされます。

あと、NSValueTransformerの登録はNib fileのロード前にする必要がありますから
Value Transformer Programming Guide Registering a Value Transformerでは
application’s delegateでinitialize: class messageで行うことが推奨されています。
- (void)applicationDidFinishLaunching:(NSNotification *)aNotification
ではタイミングが遅いように思います。
問題なく動いているようなので、結果オーライかもしれませんが。



333:320
07/09/21 08:33:51 lSzwq6kK0
>>328
ははあ。なるほど。ありがとうございます。

>>332
IBからinspectorで、NSArrayControllerのsortDescriptorsを選ぶんですよね。
ここで、Model Key Pathにnameを設定して、
Validates Immediatelyにチェックを入れるんでいいのでしょうか。

そうすると、

[Session started at 2007-09-20 13:22:40 -1000.]
2007-09-20 13:22:42.993 Hoge[2611] An uncaught exception was raised
2007-09-20 13:22:43.002 Hoge[2611] [<Hoge_AppDelegate 0x38eda0> valueForUndefinedKey:]: this class is not key value coding-compliant for the key name.
2007-09-20 13:22:43.009 Hoge[2611] *** Uncaught exception: <NSUnknownKeyException> [<Hoge_AppDelegate 0x38eda0> valueForUndefinedKey:]: this class is not key value coding-compliant for the key name.

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

となります。これって、"name"というkeyが存在しないって意味だと思うんですが、
どうやったら"name"を見つけてくれるんでしょうか。

334:320
07/09/21 08:38:01 bDIzEEDW0
また、Hoge_AppDelegate.mの中で、
+ (void)initialize {
MyValueTransformer* transformer = [[[MyValueTransformer alloc] init] autorelease];
[NSValueTransformer setValueTransformer:transformer forName:@"MyValueTransformer"];
}
というのを実装すればいいってことですか?
initializeが1度しか呼ばれない関数なのか理解していないんですが、
static BOOL initialized = NO;
とか用意して、
if(initialized){
MyValueTransformer* transformer = [[[MyValueTransformer alloc] init] autorelease];
[NSValueTransformer setValueTransformer:transformer forName:@"MyValueTransformer"];
initialized = YES;
}
とするべきですか?

長々とすみません。

335:名称未設定
07/09/21 12:09:17 T5koP5+L0
>>334
URLリンク(developer.apple.com)
の「クラスオブジェクトの初期化」のところを見ると、

クラスは自身が使用される前に、ランタイム環境を準備する機会を与えられます。
initialize は継承されるため、サブクラスのために何度も呼び出される可能性があります。

とのこと。

336:名称未設定
07/09/21 21:44:20 sPcrBli00
NSView(のサブクラス)にテキスト(日本語)を描画したいのですが、
どうすれば良いでしょうか?
(日本語のテキストを持ったNSStringインスタンスの内容を描画することを想定)
ネット上もあるドキュメント、サンプルコードなどご教示いただければありがたいです。

337:名称未設定
07/09/21 22:05:02 tcpbBsLq0
教えようと思ったけどメル欄がうざいからやめた

338:名称未設定
07/09/21 22:12:28 sPcrBli00
>>337
お騒がせしました。
自己解決しました。

hmdtに置いてありました。

339:332
07/09/21 22:35:44 Qi2gwohZ0
>>333

>NSArrayControllerのsortDescriptorsを設定してあれば、自動的にソートされます。
と書きましたが、これではダメでした。
Core Recipes Appを参考にして作ったiTunesもどきのメモソフトで自動的にソート
ができていたので、そう書いたのですが、簡単な検証プロジェクトを作って実験したところ
ソートされませんでした。
自作のメモソフトでなぜうまくいっているのか検討してみます。
しかし違いといえば、contentSetにバインドしているくらいで、ほとんどコードを書いていない
部分なので、困惑しています。

>ここで、Model Key Pathにnameを設定して、
NSSortDescriptorを要素に持つNSArrayを指定します。

initializeについては、ヒレガス本P138で
+ (void)initialize
{
//自身はPersonクラスか?
if (self == [Person class]){
[self setVersion:2];
}
}

例が載っています。
2nd Editionでは索引や、他の章で引用されているのに、この項が載っていません。



340:名称未設定
07/09/22 01:50:16 x63UH/2b0
>>339
どこかで「自動的にソートされる」ってのを見てやってみてだめだったので、
いろいろ試した結果が >>328 なんですよ。

もし、バインドだけでいけるなら私も知りたいです。

341:320
07/09/22 08:53:57 Npi1C4cP0
>>328
書いて頂いたコードを写させて頂きました。ありがとうございます。
ただ、新規項目を追加するとそいつはカラムの最下部に表示されてしまいます。

IBから常にソートできそうな気もするんですが。

>>335
参考にさせて頂き、↓のように変更しました。
+ (void)initialize
{
static BOOL initialized = NO;
if(initialized){
return;
} // if

initialized = YES;
WordColorTransformer* transformer = [[[WordColorTransformer alloc] init] autorelease];
[NSValueTransformer setValueTransformer:transformer forName:@"WordColorTransformer"];
}

342:名称未設定
07/09/22 09:31:10 Jwo4xXMJ0
削除したのに残るplistは「板データを修復」で消えるんだけど。

343:名称未設定
07/09/22 09:32:02 Jwo4xXMJ0
ごめん誤爆

344:名称未設定
07/09/22 18:08:59 e0U06nBz0
アレイコントラーのインスペクタにそれらしいチェックがあったような。
つーかインサートするたびにソートしたらうざくね?

345:名称未設定
07/09/22 21:52:36 YtaGMbG00
HMDTでiPhone開発の話をしてるけど
touch用の開発環境って出てきてるのかな?
iPhone用のアプリはtouchでは動かないみたいだけど

346:名称未設定
07/09/22 22:04:54 V8IHJ6+c0
もうiPod touchがてにはいるようになったの?

347:名称未設定
07/09/22 22:59:32 YtaGMbG00
今日出荷案内が来たよ

348:名称未設定
07/09/23 11:15:15 74QYrWGQ0
Core Data アプリで、data を NSArrayController のバインディングで
テーブルビューに表示させているのですが、IB で NSArrayController に
設定した predicate が働いてくれません。

hoge という属性を持つ Core Data のエンティティがあり、
NSArrayController の IB の Inspector の Attributes で
hoge != "hogehoge" として Set Predicate したのですが、
テーブルビューの中に hoge == "hogehoge" のデータも含め
全データが表示されてしまいます。

ちなみに、hoge == "orz" などいい加減な predicate を設定しても
動作は変わらず、すべてのデータが表示されます。

バインディングの設定の方は、何度も確かめたので正しいと思います。

どこで使い方を間違えているでしょうか。

349:名称未設定
07/09/23 15:30:27 zABjWK1w0
たぶん根本的に間違ってるよ。
そこに条件式を書いただけでは動かない。

350:348
07/09/23 16:27:42 74QYrWGQ0
>>349
下記ページの一番下の図にある通りのやり方なのですが、
根本的に間違っているのはどの辺でしょうか。
URLリンク(journal.mycom.co.jp)

条件式以外には何が必要ですか?
お教え願います。

351:名称未設定
07/09/23 19:40:13 shGaGM9l0
>>350

== ではなくて、likeとかcontains[cd]を使いましょう



352:351
07/09/24 20:34:56 s/hLGoL70
>>350

Set Predicate ボタンはちゃんとクリックしているのでしょうね?



353:348
07/09/24 20:58:16 o5Y8mmRh0
>>352
クリックしています。わかりにくい書き方でしたが、>>348
「Set Predicate した」というのはボタンを押したという意味です。

>>351 で predicate の書式についてお教えいただきましたが、
== を使わない方が良い理由は何でしょうか?

== と書いた predicate を NSArrayController にバインディングで
設定した場合にはきちんと動作しており、書式は問題ないと思うのですが。

>>349 は別の方でしょうか?「根本的な間違い」というのが何なのか、
まったくわからないままなのですが‥。

354:351
07/09/24 22:12:01 s/hLGoL70
>>353
>== を使わない方が良い理由は何でしょうか?

こちらの勘違いでした。
Predicate Programming Guideの例で
>Simple comparisons, such as grade == 7 or firstName like 'Mark'
というのがあがっていて、文字列の比較には==が使えないと思い込んでいました。
昨日試したら==でもOKでした。

predicateの設定なんて、predicateを書いてボタンをクリックするだけで他にすることはないはずです。

例えば、NSTreeControllerで parent == nilと設定すれば、第一階層のアイテムだけが
表示されます。

お役に立てず、すいません。

355:名称未設定
07/09/24 22:45:14 s/hLGoL70
ここ数日のうちにCocoabuilderやCocoa Bindings Examples and Hintsで
NSIndexSetのメソッドcountOfIndexesInRange:
を使ったコードが出ていますが、Tigerにはこんなメソッドはありません。

Leopardで導入されるものでしょうか?
NSTableViewのdrag & dropのコードで、似たようなメソッドを作ったものですから、
Appleが正式にサポートするとうれしいです。

Leopardの発売が更に楽しみになりました。

356:名称未設定
07/09/25 20:42:20 DPSBhINH0
ついでに、WebObjects を、Objective-C にしてほしいよなーー

357:名称未設定
07/09/26 07:47:06 KqKT5P0s0
WOはもうディスコンまっしぐらじゃない?
あれ?オープンソースになったんだっけ?

358:名称未設定
07/09/26 14:05:35 cVuwNs9i0
Quartz 2D Extream もどうなったのやら。やっぱディスコンまっしぐらかなぁ。

359:名称未設定
07/09/26 18:52:49 //OJRjK+0
QuartzGLになりました。

360:名称未設定
07/09/26 22:58:38 KOSgLSOH0
質問です。

大量のボタンに対して、同時に同じメッセージを投げたいんですが、
1つのアウトレットは1つのオブジェクトしか指定できません。
大量のボタンの数だけアウトレットを用意するのもスマートではないと
思いますが、何か良い方法ありますか?
よろしくお願いします。




361:名称未設定
07/09/26 23:16:06 GjSqGsk10
>>360
必要なだけNSArrayに入れてmakeObjectsPerformSelectorとか、後はNSNotificationとかかな。

362:名称未設定
07/09/27 00:01:26 PDbAKstz0
NSViewでまとめてsubViewsで取り出す

363:名称未設定
07/09/27 00:43:29 8K+2oe1e0
過去に同じようにな質問なかったか

364:名称未設定
07/09/27 00:47:46 jyqt4+rC0
>>359
thx.

365:名称未設定
07/09/27 04:55:55 1zrfBisP0
空白またはタブで項目が区切られているレコードからトークン
を切り出すのに、 chSetを whitespaceAndNewlineCharacterSet として

aScanner = [NSScanner scannerWithString:parsedString];
while(![aScannerisAtEnd]){
if([aScanner scanUpToCharactersFromSet:chSet intoString:&token])
NSLog(token);
[scanner scanCharactersFromSet:chSet intoString:nil];   }

としていますが、
アスキー文字だと期待通りに動くのですが、レコード中のどれか一つの項目を
日本語にするとその部分がスキップされて(空白だと思われて)しまいます。

どうしたらいいでしょうか。OSは10.3.9です。

366:名称未設定
07/09/27 05:24:39 CM0/B6Sl0
>>365
NSLog(token); → NSLog(@"%@¥n", token);
でどうかな?

367:名称未設定
07/09/27 06:07:29 1zrfBisP0
NSLog(@"%@¥n", token);  にすると、
日本語フィールドも表示されるようになりました。
が、最後に余計な「A¥n」が出ます。(本当はAの上に変な記号のついた文字。これをいれると
Cocomonarが落ちるので書けない
)よくわからないのですが、エスケープされてる、
ということなのでしょうか。

NSLog(@"%@", token); にするといままで通りです。
が、
NSLog(@"%@ ", token); と、後ろに空白文字を置くとキチンと
表示されます。

文字コードが悪さをしているのは見当つくのですが、具体的にどこが
悪いのかはさっぱりです。ファイルを読み込むときも、NSDataに落としてから
エンコーディングを変えながらいろいろ試してみたのですが。


368:名称未設定
07/09/27 06:23:48 CM0/B6Sl0
>>367
ごめん、¥はバックスラッシュのつもりだった。
とにかくNSLogの日本語表示だけの問題だから気にしなくていいよ。

369:名称未設定
07/09/27 11:57:33 1zrfBisP0
本当だ、¥の代わりにバックスラッシュにしたら期待道通りの結果がでました。
ありがとうございました!!

370:名称未設定
07/09/27 14:30:21 8h5IL6rA0
巨大なテキストファイルから改行コードで区切って1行ずつ読み込んで処理したいのですが、
テキストファイルをすべて読み込んでから改行コードで区切って配列に入れるとメモリを膨大に消費してしまいます。

perlっぽくファイルハンドルを取得してwhile文でeofまで回すような
ストリーミングっぽく処理したいのですがどうすればよいのでしょうか?



371:名称未設定
07/09/27 15:02:54 DoK9wEPc0
一番簡単なのはCのfgets()を使う方法。改行がLFでないと使えないけどな。

後は先読みバッファを作って、特定のサイズ分ファイルを読み込んで、そこから
改行までを取り出して、残った部分をムーブして空いた分だけファイルから
読み込み、これを繰り返す。

372:名称未設定
07/09/27 16:12:29 8h5IL6rA0
>>371
ご教授ありがとうございます。
Cのfgets()関数を使ってうまくいきました。
objective-cで出来るか探してみましたがなさそうですね。



373:名称未設定
07/09/29 10:12:39 zZqJ0dcb0
NSWindow 上に NSTableView がいくつか置いてあるのですが、
その TableView 間でファーストレスポンダが変わったことを
検出するには、どういった方法があるでしょうか。


374:名称未設定
07/09/29 15:34:01 8IGuMuZ60
文字列を正規表現で置換したいのですが、標準機能ではないのでしょうか?

>>373
テーブルビューの選択が変わったなら通知するのがあったような。

375:名称未設定
07/09/29 15:40:36 x13OGOM+0
Cocoaで正規表現ならOgreKitが定番かな。

URLリンク(www8.ocn.ne.jp)

376:名称未設定
07/09/29 15:45:51 pwcm/+Ub0
>>373
acceptsFirstResponderとかその辺でどうかな。

377:名称未設定
07/09/29 15:57:41 E1JHDeBB0
regex.h

378:373
07/09/29 16:17:02 zZqJ0dcb0
>>374
どのような通知でしょうか。
調べてみてはいるのですが、見つかりません。

>>376
すみません、acceptsFirstResponder をどのように使うのでしょうか。


379:名称未設定
07/09/29 16:27:27 pwcm/+Ub0
>>378
ググってみて。HMDTさんのサイトがお勧め。

380:名称未設定
07/09/29 18:34:35 EN0/o6QM0
通知ってnotificationのことでしょ
NSTableViewのヘルプにあるよ

381:373
07/09/29 22:19:34 zZqJ0dcb0
>>380
具体的にどの notification のことをおっしゃられていますでしょうか。
検出したいのはTableView間の移行の話なので、TableView の notification
ではないのではないかと思うのですが。

ちなみに現在は暫定策として、NSWindowDidUpdateNotification を
使っていますが、これだと必要のないときにも notification が出るので、
パフォーマンス改善のためにもっと良い方法を探しています。

382:名称未設定
07/09/29 22:57:21 3B7qOXdqP
NSResponderで定義されてるbecome~などのファーストレスポンダ関連の適当なメソッドを上書きして適当な通知を送るようにすればいいんじゃない?

383:380
07/09/29 22:59:45 EP9ETOnN0
>>373
ごめんね、NSResponderのnotificationだったわ

384:名称未設定
07/09/30 08:23:16 1+3bPOa/0
>>361
遅レス申し訳ありません。

InterfaceBuilderで置いたボタンをNSArrayに入れる方法が分かりません。
すみませんが、よろしくお願いします。

385:名称未設定
07/09/30 11:59:03 f54IiRS90
>>384
そのボタン群用にNSButtonのサブクラスを用意して、
awakeFromNibで適当なNSArrayに格納するとかかな。
NSNotiricationを使う場合も同様に。

任意のタイミングで格納する場合は、subviewsを使うしかないと思います。

386:名称未設定
07/09/30 16:30:45 KRhNhdGX0
プログラム最後の
[pool release]; で実行エラーが発生します。

allocとreleaseの数は合わせてあるのですが、メモリ管理でほかに
注意すべき点はなんでしょか。

387:名称未設定
07/09/30 16:33:17 2MyNhREa0
その直前でretain count調べてみれば?

388:名称未設定
07/09/30 16:36:42 ZGxp/2ZH0
エスパーがいらっしゃるまでしばらくお待ちください

389:名称未設定
07/09/30 16:46:22 FHx4HOJm0
retain count なんて調べてるやつはバカです

390:名称未設定
07/09/30 18:25:25 9ybOP3SL0
alloc+copy==release+autorelease

391:名称未設定
07/09/30 18:37:41 1+3bPOa/0
>>385
やってみます。
ありがとうございました。

392:名称未設定
07/09/30 18:50:03 hHTRsSyH0
LeopardでRIUIを採用するのかしないのか
QuartzGLも採用するのかしないのか
雰囲気的にはTigerが出る前と全く変わらないな...

393:名称未設定
07/09/30 18:54:51 hHTRsSyH0
誤爆に見えないかもしれないけど誤爆したみたい...orz

394:名称未設定
07/09/30 20:53:05 KRhNhdGX0
>>390
copy は明示的には使っていないので、数は合っている筈なのですが、
もう少し勉強してみます。

395:名称未設定
07/09/30 20:59:28 RmZQ6wEv0
クラスメソッドの中で一時的に作成した配列や辞書は、
メソッドの最後でまめにリリースしたほうが良いのでしょうか?
それとも勝手にリリースしてくれるのでしょうか?

アプリケーションの使用メモリが増えてきてどうすれば良いのかご教授下さい。

396:名称未設定
07/09/30 21:19:06 J3lW9Bur0
どう作成したかによる。そのルールはクラスメソッドかどうかは関係ない

NSArray* array = [[NSArray alloc] initなんたら]
で作成したのならスコープを抜けるまでに
[array release] または [array auto] する義務がある

NSArray* array = [NSArray arrayWithなんたら]
で作成したのなら
[array release] または [array auto] してはいけない

NSArray* array = [NSArray arrayWithなんたら]
で作成した場合でも、その後
[array retain]
したのなら
[array release] または [array auto] する義務がある


397:名称未設定
07/09/30 21:24:04 J3lW9Bur0
auto の部分は autorelease の誤りです

398:名称未設定
07/09/30 21:38:11 KRhNhdGX0
copyを使ってなければ、allocの数とrelease 又はautoreleaseの
数を一致させればいいのですよね。
でもpool releaseでコケる。う~む。

399:名称未設定
07/09/30 21:44:01 J3lW9Bur0
暇なんで >>396-397 にさらに解説しておくと


alloc と initなんたら によるインスタンス作成は、インスタンスの所有が呼び出し側に発生する。
つまり(releaseまたはautoreleaseで)所有を放棄する義務があり、またそうしないといつまでもメモリ解放されない。

arrayWith なんたら によるインスタンス作成は、インスタンスの所有は呼び出し側にない。
よってreleaseまたはautoreleaseしてしまうと、他の所有を勝手に放棄してしまうことになり、過解放となる
(クラッシュなどを引き起こす)。

releaseとautoreleaseの違いは、
releaseは、呼ぶとすぐに自分の所有を破棄する。他も所有していなければメモリ解放される。
autoreleaseは、後で(ランタイムが適当なタイミングで)所有が破棄される。
大まかに言うと、メソッドがreturnしたらreleaseが呼ばれる(この場合がほとんど)。

つまり、arrayWith なんたら によるインスタンス作成は、
alloc と initなんたら によるインスタンス作成 に加え、autoreleaseが既に一度呼ばれた上で渡されている
というだけの違い。

所有のないインスタンスに自分の所有を加えるには、retainを呼ぶ。これにより所有が呼び出し側に発生し、
いずれ所有を放棄しなくてはいけない義務が発生する。

400:名称未設定
07/09/30 23:13:19 J3lW9Bur0
とりあえずretainCountの仕組みを

・そのpool releaseをコメントアウトするとコケなくなるのか?

401:名称未設定
07/09/30 23:14:22 /8gv9Izg0
>>399
GCが導入されると、違いは無くなるのですかね?。

402:名称未設定
07/09/30 23:14:34 J3lW9Bur0
>>400は無視して下さい

>>399で述べたような、autoreleaseによるreleaseの予約を管理しているのがNSAutoreleasePool。
以下の場合、arrayは[pool release]が呼ばれたタイミングでreleaseされる。

NSAutoreleasePool* pool = [[NSAutoreleasePool alloc] init];
NSArray* array = [[NSArray alloc] init];
[array autorelease];
[pool release];

通常、何らかのインスタンス(上の例だとarray)にautoreleaseを呼ぶと、
一番最後に作成されたNSAutoreleasePoolのインスタンス(上の例だとpool)に、
その何らかのインスタンス(上の例だとarray)が登録される。そのNSAutoreleasePoolのインスタンス(上の例だとpool)
が破棄された時に、登録された何らかのインスタンス(上の例だとarray)にreleaseが呼ばれる。

Cocoaアプリのメインスレッドでは、NSApplicationがNSAutoreleasePoolの作成と破棄を繰り返している。
なので通常、自分でNSAutoreleasePoolのインスタンスを作成しなくてもautoreleaseの呼び出しが可能。

サブスレッドでは、NSAutoreleasePoolのインスタンスを自分で作成する必要がある。
また、メインスレッドでも、forやwhile文などのループ内でautoreleaseを何度も呼び出す場合は、
release予約の(つまりメモリ解放されない)インスタンスが増えるので、ループ内で
NSAutoreleasePoolの作成と破棄を繰り返して使用メモリの増大を防ぐという方法がある。

403:名称未設定
07/09/30 23:17:41 J3lW9Bur0
>>401
さあ。GCの仕組みをどう実装してるかによるんでしょうね。

404:名称未設定
07/09/30 23:23:15 KRhNhdGX0
>>402
>また、メインスレッドでも、forやwhile文などのループ内でautoreleaseを何度も呼び出す場合は、
>release予約の(つまりメモリ解放されない)インスタンスが増えるので、ループ内で
>NSAutoreleasePoolの作成と破棄を繰り返して使用メモリの増大を防ぐという方法がある。
>

どうもこの辺が怪しい気がしてきました。

405:名称未設定
07/10/01 02:12:00 jb1YsKc80
Am I missing something? I have the need to be able to send a simple
email from my application and NSMailDelivery's
+deliverMessage:subject:to: looked perfect but I can't get it to work.
I assume this is because I have not configured an SMTP server but I
don't see any way under Panther to do so. I vaguely recall there being
System Preferences control panel for this in earlier versions of OS X
but don't have an old version that I can check. Does NSMailDelivery
still work under Panther? And if not, is there a simple way of sending
an email without having to go through a mail client using NSWorkspace?

に対し、

406:名称未設定
07/10/01 02:12:36 jb1YsKc80
You can use NSMailDelivery without using a mail CLIENT, but you do need
a mail server... probably the same one that your mail client is using.
If this is an application that will be used by different people at
different locations, you will probably need to have them set a
preference telling the location of their mail server. You can also pull
the address from their internet preferences, assuming the user has set
them up.

407:名称未設定
07/10/01 02:16:53 jb1YsKc80
という回答なんですが、ローカルでメールサーバーを立ち上げてないとダメ、
ということですよね。
で、postfix startしてみたのですが、[NSMailDelivery hasDeliveryClassBeenConfigured]
はNOのまま。

どの設定をいじればYESが帰ってくるのでしょうか。

408:名称未設定
07/10/01 03:20:31 4GJ4e1sj0
Mail.appの設定じゃないかな。
smtp serverがローカルで動いている必要はないはず。

409:名称未設定
07/10/01 11:50:57 oEXnpz/k0
オーナーシップデバッグ。
これ基本。
URLリンク(developer.apple.com)
NSZombieEnabled='YES'
環境変数なので、 「実行可能ファイル環境」で設定のこと。

410:名称未設定
07/10/01 13:18:53 jb1YsKc80
>>408
はじめはそう思ってMail.appの環境設定の項目を調べてみたのですが、
どうもそれらしいものが見当たりません。システム環境設定も同様でした。


411:名称未設定
07/10/01 13:20:27 jb1YsKc80
>>409
参考にさせていただきます。
ありがとうございます。

412:名称未設定
07/10/01 15:30:29 v2NRyQLs0
>>410
[NSMailDelivery hasDeliveryClassBeenConfigured] は、
「Mail.appでメールが出せる設定が出来ているかどうか」の意味っぽいけど?
できてる?
たぶんMail.appのアカウント設定の情報を参照してSMTPサーバにメールを
自前で投げるんだと思う。

413:名称未設定
07/10/01 23:44:37 jb1YsKc80
>>412
>「Mail.appでメールが出せる設定が出来ているかどうか」の意味っぽいけど?
>できてる?

Mail.appは毎日のように使っているので、そういう意味では問題筈です。
でも、「設定」の意味がよくわからないんですよね、海外のサイトを見ても。

414:名称未設定
07/10/02 07:18:33 4wWs2Gwh0
スクリーンショットを撮るアプリケーションを作っています。

スクリーンショットを撮るためにそのアプリを起動すると、
そのアプリがアクティブになってしまい、メニューバーにも
名前が表示されてしまうので、どうしても元のままの状態で
スクリーンショットを撮ることができません。

何か解決策があれば、教えていただけるとありがたいです。
よろしくお願いします。

415:名称未設定
07/10/02 07:43:14 HqqJ+v970
>>414
例えば純正である
/アプリケーション/ユーティリティ/グラブ.app
の場合はタイマー機能で任意のアプリのスクリーンショットを取ることを可能にしている。

416:HK
07/10/02 19:13:50 zksrfeR70
>>414
URLリンク(developer.apple.com)
のNSUIElementやLSBackgroundOnlyその他を参照。
日本語訳はポッチンルームにあります。
自作日本語入力メソッドを作りましたが、
サーバーアプリケーションはこのへんを設定して裏にまわります。
裏から変換候補ウインドウを他アプリが前面のまま表示できます。

417:名称未設定
07/10/02 19:51:17 t7c+rGGO0
>>415,416
的確に教えていただき感謝です。ありがとうございました。

418:名称未設定
07/10/05 19:46:57 gAtx49120
例えば引数のメッセージやアイコンからメッセージダイアログを出すクラスを作って
いろんなクラスからそれを利用したい場合、

・各クラスでインスタンスを作成するのか、
・I.B上でインスタンスをひとつ作成して他のインスタンスと繋げるのか、

どちらの方法が良いのでしょうか。

419:名称未設定
07/10/05 20:46:57 qqy/rlKl0
>>418
NSAlertをお勧めします。
自作する場合もそれに準じるのが良いと思います。

420:名称未設定
07/10/05 21:20:03 uw5Y856q0
>>419
最初は各クラスで必要な箇所でNSAlertをだしていたんですが、
かなり頻繁にいろんな箇所で使うのでまとめたいなあと。
メッセージ、表示ボタンもケースによってバラバラですし。

なので、共通で引数で処理するようまとめてみたんですが。

421:名称未設定
07/10/05 23:35:57 qqy/rlKl0
>>420
素直にNSAlertのカスタムクラスかカテゴリはどうですか?

422:名称未設定
07/10/07 22:01:11 3CacK9uM0
URLリンク(homepage.mac.com)

423:名称未設定
07/10/07 23:36:08 jl2bDT9K0
無料のときからずっと使っているとこの十月で更新になるからな

424:名称未設定
07/10/08 15:05:10 pbJo8Zn/0
>>421
アドバイスありがとうございます。
カテゴリなんてのもあるんですね。勉強してみます。

425:名称未設定
07/10/11 09:29:49 nscIn2lg0
CIImageのオブジェクトなんですけど、
ビットマップの上と下に余白部分を作りたいんですよね。
バックグラウンドになるビットマップを作って、
そこにCIFilterのCompositing Filtersで合成しようと思い立ったんですけれど、
CIFilterが最初から持ってるエフェクトで座標を指定して合成するのって見当たらないんです。
で、なにかいい方法があればお教え願いたいんですが。。

426:名称未設定
07/10/11 15:53:07 +RNbQCmY0
CIAffineTransform

427:425
07/10/11 16:12:36 nscIn2lg0
>>426さん
■■■■■余白
□□□□□もともとのビットマップ
□□□□□
■■■■■余白
こうしたいのですが、アフィン変換でそんなことできるんですか?


428:名称未設定
07/10/11 16:33:26 ToYfcU0y0
>>427
ググればすぐ分かる事を...
ヒント貰ったんだから、あとは自分で調べなよ。

429:425
07/10/11 17:17:47 nscIn2lg0
CIFIterのCIAffineTransformのところはドキュメントを読んでたんですけれど、
いまいちピンと来ないんですよね・・・。
Google検索してもこれと言って情報も無いし。
拡大してoutputImageしてからもう一回inputImageして縮小するってことかな。
もうちょっと調べてみます。

430:名称未設定
07/10/11 18:21:54 Q0Oj/uoh0
原点...

431:名称未設定
07/10/11 19:05:53 ToYfcU0y0
>>429
アップルのサイトに全てありますよ。
座標移動の NSAffineTransform は、
[[NSAffineTransform transform] translateXBy:0 yBy:10];
みたいな感じで作れるよ。
あとはこれを inputTransform に設定するだけじゃないですか。

432:429
07/10/11 19:11:36 ToYfcU0y0
あれ、これって変換した新しいCIImageを作るだけですね。
ごめんなさい。

433:432
07/10/11 19:59:57 ToYfcU0y0
名前欄間違えました。
ちょっと調べてみたけどCIFilterでは無理っぽい。
面倒だけど自前でやるしかないですね。

434:名称未設定
07/10/11 20:05:06 RqBWEm1l0
WindowかViewをフェードアウトして消えてくように
したいんですが、どのようにやるといいでしょうか。
自力で透明度いじるしかありませんか?
OSX10.4です。

435:名称未設定
07/10/11 20:21:29 ukinxETG0
黒で塗りつぶした上にCIImageの座標を適当にずらして描画すればんじゃないのか?

436:425
07/10/12 09:29:16 XnHNJR3q0
>>433
そうなんですよね。CIFilterが最初から持ってるエフェクトだと、
合成時に座標を指定する事が出来ないんですよね。
NSOpenGLView側で描画位置を変えるって言う手もあるんでしょうけれど、
それだと背景色を指定できないし。
>>435
NSGraphicsContextとNSBezierPathでビットマップを作って、そこに貼付けるってやり方でやってるんですが、
カスタムのCIFilterを作るしか無いのかなと思って来てます。

437:名称未設定
07/10/12 09:29:45 CM/NoWBY0
>>434
標準的なUIにはない挙動だから(多分)、自分で何かするしかないのでは。
10.4ならNSViewAnimationを使うのが一般的&楽かな。
より原始的(?)に、タイマーで透明度を徐々に変化させていってもできる。

438:425
07/10/12 09:30:20 XnHNJR3q0
あれ?ひょっとしてアフィン変換した元画像をビットマップに合成すればいいのかな?
ちょっとやってみます。

439:425
07/10/12 16:49:48 XnHNJR3q0
やってみたところうまくいってるみたいです。
ありがとうございました。

440:名称未設定
07/10/12 16:53:45 HFBiEdQm0
なんという回り道・・・

441:名称未設定
07/10/13 09:03:43 hg0jttDu0
各種ファイルをNSFileWrapperを使ってシリアライズ・比較・更新等するような
ソフトを作ろうと思って少し試しているんですが、

ファイルの内容の比較のため、とりあえずシリアライズされたデータを比較
してみたんですが、どうやら元ファイルの内容が同じでもシリアライズされた
データは異なるようです。NSFileWrapperのバグなのか、シリアライズ化
というもの自体の特性なのか、よくわかりませんが...

なお、ここでの同一性とは、元のファイルに diff をかけたのと同じ結果、を
期待しています。

こういう場合、データのシリアライズ化とファイル内容の同一性って、どうやって
両立したらいいでしょうか... もし同一性もチェックできるシリアライズ化
なんてものが存在するとうれしいのですが。

442:名称未設定
07/10/13 11:02:54 XvtdC7UH0
URLリンク(hmdt.jp)

こんなアプリが増えていますけど、みんな似たような事してるんですかね?。
最近の増え方を見ていると、もっと楽な方法がありそうな気がするのですが。

443:名称未設定
07/10/13 21:38:57 eZww9H1A0
Vistaが「遅い」と感じませんか?
URLリンク(itpro.nikkeibp.co.jp)

 2007年1月30日にWindows Vistaが店頭で発売されてから約8カ月が過ぎた。
この記者の眼でも,4月24日に「Vistaってどうよ?」というややポジティブな見解が掲載された。
これはこれで納得できる。「『売り上げは期待を下回るが私は強気』,
マイクロソフトWindows本部長」というコメントもほぼ同時に報じられた。

 その後もマイクロソフトは,「Windows XPのPCメーカーへの出荷,来年1月で終了へ」と突っ張っていた。
それが最近では「『Windows XPの販売を5カ月延長』,米マイクロソフトが方針転換」と来た。
低価格パソコン向けに新興国で販売している「Windows XP Starter Edition」については,
2010年6月30日まで販売を延長するという。Vistaはどうもハッピーな状況ではない。

 Vistaが好感を持たれない理由は,(1)価格が高い,(2)マイクロソフトの訴求するセールスポイントが
ユーザーの感覚とかけ離れている,(3)2001年にWindows XPが出て約6年が経過する間に
ハードウエア,ソフトウエア,使いこなしノウハウの資産が各所に大量に蓄積されて
移行コストが上がった,などが考えられる。ただ,最大の理由は,Vistaが「遅い」ことではないだろうか。
Vista搭載パソコンを新規に導入した人なら,おおむね性能に不満はないだろう。
でも,新しいパソコンをポンと買える人がどのくらいいるだろうか?


444:名称未設定
07/10/15 08:47:51 RJEHHK9w0
うーん、ApplicationDidFinishLaunchingノティフィケーションを実装しても
何故か呼び出してくれない。サンプルのsketchを見るとセンターに登録せずに
使えてるようなんだが・・・

445:名称未設定
07/10/15 08:57:43 w9VArlJf0
delegate にする

446:名称未設定
07/10/15 09:23:49 RJEHHK9w0
>>445
Notificationじゃなかったのか。ありがとう。
おかげで起動時にパレットを表示できるようになったよ。

447:名称未設定
07/10/16 01:50:24 RhpguY+z0
age

448:名称未設定
07/10/16 23:56:51 UHgbhQAb0
Leopardは26日発売か。早くADCのサイトでLeopardのドキュメントが読めるよ
うになってくれないかなぁ。Obj-C 2.0とCore Animationの詳細が知りたくてた
まらん。


449:名称未設定
07/10/17 13:10:54 vy+i57Fb0
$500で1年前から読めるけど。

450:名称未設定
07/10/17 15:12:35 9JlNZqhL0
趣味で読むには高過ぎる値段だ。


451:名称未設定
07/10/17 15:34:38 bw4gG9tu0
でもLeopard買わずに済むよ。MacProを買うんなら元取れるし。

452:名称未設定
07/10/17 20:37:50 1AjA4OVd0
俺の用途から言って趣味でMacProなんて宝の持ち腐れも良いとこだし。

まあ26日には読めるんだからそれまで辛抱だろうな。

453:名称未設定
07/10/17 21:22:18 UrqKimq/0
でもま、趣味で買うやつもいるんだろうなw

とりあえずはこれでガマンかー。早くこいこい
URLリンク(www.apple.com)
URLリンク(developer.apple.com)
URLリンク(developer.apple.com)
URLリンク(developer.apple.com)

454:名称未設定
07/10/18 01:06:04 mkmoS9NR0
XcodeのSCM機能は貧弱と聞いたのだけれども、3.0で改善されているのかな
URLリンク(doni-dog.blogspot.com)

455:名称未設定
07/10/18 01:17:10 slHsJ97C0
>>454
そのリンクの奴、ちゃんと使えてるとは思えんな。
SCMが特許対策というのも意味わからん。

456:名称未設定
07/10/18 02:23:44 Mr8A9HPs0
svnadminなんてXCodeに必要な機能じゃないし、TimeMachineなんてありえないわ。

457:名称未設定
07/10/18 06:35:32 tLRRr8tY0
きっと、単に変更履歴を追いかけることが出来るから、後で
特許関連で訴えられたときに証拠として採用するように訴える
ことが出来るだろ、てことじゃないのかな。

採用されるかどうかは分からないが。

458:名称未設定
07/10/18 09:02:33 fqG2TSy+0
オープンソース等で公開されているものなら証拠にはなるかもしれないけど
そうでないなら信頼性はまったくないな。

459:名称未設定
07/10/18 10:54:31 Y0mjkOTf0
まぁ俺は、リビジョン管理システムがないのはやはり欠点と思う。

開発ツールなんだしさ。定期的にスナップショットを保持出来る
ような仕組みがあるだけでも大分違うし。

460:名称未設定
07/10/18 20:27:18 6hta7bjM0
URLリンク(www.apple.com)

Xcode 3.0

# プロジェクトのスナップショット

失敗を恐れず、心ゆくまでテストしましょう。プロジェクトのすべてのファイルを、いつでも好きな時に記録しておけます。万一の時もこれで安心。プロジェクトをいつでも元の状態に戻せるので、自信を持ってテストできます。


461:名称未設定
07/10/18 22:15:13 lA7sYrRH0
Xcode3.0楽しみだね。早くこいこいGC。

462:名称未設定
07/10/19 12:34:51 VK3fEPzF0
>>460
それってsvnベース?
変更点を見比べることができるようなインターフェースが欲しい。

463:名称未設定
07/10/19 13:02:13 GQjRZD8/0
今でもあるけど。

464:名称未設定
07/10/19 13:06:34 z7q4y0U10
>>463
shift-jis 以外の日本語で落ちなければ、今のままでいい。
変換すればdiffは見れるけど、マージできないし。

465:名称未設定
07/10/19 13:51:02 uOW40gYR0
Core Data Document Based Applicationで
ファイルがloadされたときに勝手にNSArrayControllerに
objectが追加されるけど,その追加された直後に何かやりたいときは
どうしたらいいですかね。
notificationでも飛んでくるといいのだが。



466:名称未設定
07/10/19 14:51:45 XaYlxLt20
>>465
NSManagedObjectの
- (void) awakeFromInsert;


467:465
07/10/19 17:04:47 uOW40gYR0
>466
ありがとう
awakeFromFetchでできました

468:名称未設定
07/10/19 19:17:19 m+Row12Z0
>>462
普通に考えるとTime Machineじゃね?

469:名称未設定
07/10/19 20:09:43 k7hQT15w0
現在使用しているシステムの言語を取得するには
どうすればいいのでしょうか?


470:名称未設定
07/10/19 21:06:05 XaYlxLt20
echo $LANG
defaults read NSGlobalDomain AppleLanguages



471:469
07/10/19 22:49:11 k7hQT15w0
>>470
どうもです、以下の方法でいけました。

NSUserDefaults* defs = [NSUserDefaults standardUserDefaults];
NSArray* languages = [defs objectForKey:@"AppleLanguages"];

URLリンク(potting.syuriken.jp)

472:名称未設定
07/10/20 00:26:47 nttpT0GF0
NSCalendarDate で、例えばNSLogなどで%@が指定されている場合、
descriptionWithLocale:が送信されるとドキュメントにはあります。

NSLog(@"The current date and time is %@", [NSCalendarDate date]);
だと、
this statement invokes descriptionWithLocale:
だとあります。

しかし、descriptionWithLocale:は引数として(NSDictionary *)localeをとるのに、
その引数はどこからやってくるのでしょうか。

というか、デフォルトのロケールを(いちいちlocaleを指定しないでも)日本語にしたい
のですが、できるんでしょうか(環境変数なんかで)。
デフォルトロケールをセットするメソッドが見当たらないので、
カテゴリとかで対応するしかないのならそうしますが、そんなことしなくても
済むのならと思いまして。

473:名称未設定
07/10/20 02:55:24 nttpT0GF0
環境変数LANGが日本語に設定されていれば、NSCalendarDateの出力も日本語
になると思っていたのですが、そうではないですよね?

ターミナルからdateコマンドを実行すると、LANGの設定の有無で表示が切り替わる
のが確認できるのですが、自前プログラムでNSCalendarDateを使って表示させると、
日本語がでてくれません。もちろん、localeディクショナリを自前で用意してやると
ちゃんと出るのですが、Cocoaにおいて(具体的にはNSCalendarDateなど)カレン
トロケールの設定はどうしたらいいのでしょうか。

/usr/share/localeのjpフォルダには、LC_TIMEがあって、月、火、水、とか
設定されているのですが、どうもこいつが利用されていないのですよね、NSCalendarDate
では。
OS は 10.3.9です。

474:名称未設定
07/10/20 03:17:55 nttpT0GF0
Appleのドキュメントや荻原本(p306)にあるように、

NSCalendarDate *calendarDate =
[[NSCalendarDate alloc] initWithTimeIntervalSinceReferenceDate:uploadedTime];
[calendarDate descriptionWithLocale:
[[NSUserDefaults standardUserDefaults] dictionaryRepresentation]];

こんな感じでもやってみましたが、ユーザデフォルトから作った辞書のなかに、
NSShortWeekDayNameArrayやNSWeekDayNameArrayといったキーがないので、
やはり日本語が出てくれません。

475:名称未設定
07/10/20 05:52:17 pIwCUrUa0
LANGじゃ機能不足だから。

476:名称未設定
07/10/20 09:31:19 chy8q2CK0
URLリンク(developer.apple.com)

Important: Although you can get the user's preferred settings from the defaults database,
it is recommended you use the CFBundle functions or NSBundle class instead.
The associated functions and methods of those objects return the preferred
language or locale that is also supported by your application. (Bear in mind that the
returned values may not correspond directly with the user's exact preferences.)

あまり参考にはならないかも・・・

477:名称未設定
07/10/20 10:08:04 A3g+yh3Z0
見るべきはこの辺じゃないの?
URLリンク(developer.apple.com)
URLリンク(developer.apple.com)

CocoaはLANG なんて使ってないし。
プログラム内で自分でNSLocaleの初期化時に使えばいいんでないかな?

どうせ聞いてくるから先に。
getenv(3)

478:名称未設定
07/10/20 12:22:05 nttpT0GF0
みなさんありがとうございます。これから仕事なので、
あとでもっとしっかり読みますが、いま、ざっと読んだかぎりでは、

環境変数で挙動を変えるのではなく、コード内でユーザの設定を読み取る必要があるという
ことですね。
すると、やはり、その読み取ったロケールに従って、locale dictinary
を作り(あるいはこれも取得できるのかもしれませんが)、それを引数に指定して
withLocale系のメソッドを呼ぶ、ということになりそうです、いまの理解では。
少なくても10.3においては。


479:名称未設定
07/10/20 18:38:34 A3g+yh3Z0
これがおかしいのか。 >474
職場なので cf.sourceforge.jp で試したけどちゃんとできるよ。
10.4 だけど。

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

id d = [[NSUserDefaults standardUserDefaults] dictionaryRepresentation];

NSLog(@"%@", d);

id s = [NSCalendarDate dateWithTimeIntervalSinceNow:0.0];
id ss = [s descriptionWithCalendarFormat:@"%c" locale:d];

NSLog(@"%@",ss);

[pool release];
}

で日本語で出た。
もちろんLANGなんて設定してないよ。

480:名称未設定
07/10/20 19:56:16 b1ZhonRi0
cocoaを勉強しはじめて2ヶ月の者です。
基本的なことですが、分からない事があるので質問させてください。
あるクラス全体で使いたい変数を宣言するには、

@implementation クラス名

のあと(メソッドを記述する前の部分)に static という宣言をして
変数を宣言すればよい、と知りました。

そこで、
static NSArray *myArray;
のように宣言し、そのクラスの中に

-(NSArray *)ReturnMyArray{
//NSLog( @"NSArray *myArray =%@",[myArray componentsJoinedByString:@" and "]);
return myArray;
}


という宣言した配列を返すメソッドを作りました。

これを実行すると、このメソッドが呼ばれた時点でフリーズして
しまいます。何が問題なのか分からないので、教えていただけると
ありがたいです。よろしくお願いします。


481:名称未設定
07/10/20 20:44:18 C5KB0rGs0
初期化してやらないといけないのでは

482:名称未設定
07/10/20 20:45:04 MXAR1ZE10
NSLogの行はコメントってことでいいの?
そうであれば、とりあえず呼ばれた時点でフリーズすることは無いんでは。

NSLogの行が有効で、myArrayが何も指していない状態で呼び出すと、クラッシュすると思うけど。

483:名称未設定
07/10/20 21:01:19 ephnEzFr0
多分、基本的な所でつまずいていますので、どなたか教えて下さい。

本体をプラグインにて拡張できるアプリケーションがあるとします。
このとき、本体とプラグインで、
別のバージョンの同じフレームワークを使用する事は出来ますか。

例えば、以下のような構成です。

本体(フレームワーク v1.0)
プラグインA(フレームワーク v2.0)
プラグインB(フレームワーク v3.0)

どうも、先に読み込まれた(本体の)フレームワークを後に読み込んだプラグインでも使用しているようなのです。
バンドルが違っても、同じクラス名はダメなんでしょうか?

よろしくお願いします。


484:名称未設定
07/10/20 23:55:06 i5VOuciv0
ウィンドウの外観をmail.appみたくスッキリした明るいツルペタにしたいのですが、
どこかリソースを配布しているところはありませんでしょうか?

それらしいアプリのリソースフォルダを漁ってもなかなか見つからなくて。

485:名称未設定
07/10/21 00:20:37 AuZVtDw10
NSUnifiedTitleAndToolbarWindowMask

486:名称未設定
07/10/21 12:37:24 2g9tmK/v0
LeopardのObjectiveCのランタイムってオープンソースだよね?
Tigerにも入れられないのかなぁ

ところで、/System/Library/Frameworksの中身って、
アプリケーションバンドルに入れて配布していいの?
配布できるのなら、Tigerでも動くGCアプリが組めるかもしれないね

487:名称未設定
07/10/21 23:54:28 uO+uiivY0
>>479
此方でも確認できました。

>>474で駄目だったのは、一言で云えば勘違いです。
デフォルトフォーマットだと曜日が出力されないため、漢字が表れなかっただけでした。
失礼しました。

皆さんのご教示にヒントを得て試した限りでは、
>>478の内容で間違いなさそうです。

つまり、コード内でロケールを取得し、それに従った辞書を使う、ということですね。
そして、辞書はユーザデフォルトが使えます。これはAppleのドキュメントや荻原本や
>>479のとおりです。

ここまでで当面の障害はクリアできました。しかし、いまだに>>472が謎です。
%@がdescriptionWithLocale:を呼ぶとあるのですが、その場合引数はどこからくるのかな、
と思うわけです。nilだとしたら単なるdescriptionを呼ぶのと差が出ないし。
プログラミングを進めていくうえでこの謎が障害ではないのですが、もし解決するとスッキリ
するので書いてみました。

レスいただいた皆さん、ありがとうございました。




488:名称未設定
07/10/22 15:12:29 Gv93rxrK0
>>487
>%@がdescriptionWithLocale:を呼ぶとあるのですが、その場合引数はどこからくるのかな、
>と思うわけです。nilだとしたら単なるdescriptionを呼ぶのと差が出ないし。

NSLog() では locale 部分は常に nil が指定されているっぽい(挙動より推定)。
何らかの方法で別の locale を指定できるかは不明。ただ NSCalendarDate 側で
setDateFormat: 等により日付の書式を変更することは可能。

NSString の format を扱うメソッドでは locale を指定できる。

489:名称未設定
07/10/23 11:09:44 xEB3AVEJ0
復活した
URLリンク(homepage.mac.com)

490:名称未設定
07/10/23 12:43:14 hf1e1yJr0
スレリンク(mac板:899番)
調べたらいろいろあるなぁ


491:名称未設定
07/10/24 19:31:02 7aPURO+G0
ややこしい質問ですみません。

メニューアイテムのサブクラスを作り、アイテムを動的に変化させるサブメニューを追加ました。

メニューアイテムを選択した時にサブメニューの内容を再表示させるために
・親メニューのデリゲートをメニューアイテムにセット。
・メニューアイテムのサブクラスでmenuNeedsUpdateを記述し、サブメニューを再作成する処理を記述。

この場合、親メニューに同じような動的に変化するメニューアイテムを複数追加すると、
どれかひとつだけしかサブメニューが展開されません。

原因は親メニューのデリゲートを個々のメニューアイテムのサブクラスで取り合ってるからだと思いますが、
うまく全てのサブメニューを動かす方法はありませんでしょうか。

492:名称未設定
07/10/24 20:03:08 sR3ireTF0
単にvalidateMenuItem:で変化させるのじゃダメなの?

493:名称未設定
07/10/24 23:05:29 stlIlKGC0
>>492
ご指摘ありがとうございます。なんとか自己解決しました。
サブクラスのインスタンス変数にNSMenu *aMenuを作って、最初に[aMenu setDelegate: self ]で
サブクラスに記述したmenuNeedsUpdateが効くようになりました。
あとは毎回aMenuのアイテムを作り替えれば出来ました。


494:名称未設定
07/10/27 10:17:12 3Nec+9va0
ウインドウにボタンとラベルだけを配置した画面を
Leopardのテクスチャウインドウにしたら......カッコ悪るすぎる!!

495:名称未設定
07/10/27 11:52:47 jEECVdr70
age

496:名称未設定
07/10/27 14:15:46 3Nec+9va0
Recessed Buttonのフォーカスリングがバグっぽいんだけど俺だけ?


497:名称未設定
07/10/27 17:07:06 iaL/K9DY0
メタル指定のnibウィンドウ、Leopardで起動すると
もっと暗いソリッドな灰色になっちゃう
激しく見づらいです・・・

498:名称未設定
07/10/27 18:36:18 C2JoQvU90
>>497
だよねー。テキストの色を白くするか黒くするか迷うくらいに微妙な色使いだよ

499:名称未設定
07/10/27 21:08:55 Og+Fksq40
まだタイガーなんですけどメタルウインドウは
Leopardではツルペタになるんですか?

500:名称未設定
07/10/27 22:08:37 Bh3IlNe10
メタルなウィンドウにテキストを書く場合は、
テキストに下方向に白色のドロップシャドウを落とす
(そうすると彫り込んであるように見える)のが筋だね。

Leopardのソフトはほとんどそうなってる。

501:名称未設定
07/10/27 22:08:41 C2JoQvU90
なるんですよorz
それがかっこわるいんですよorz

502:名称未設定
07/10/27 22:57:58 kLyG3aM00
タイガーで問題なかった俺のコード
レパドンでは動かねぇ‥ orz


503:名称未設定
07/10/27 23:10:42 ucyY83x00
俺のは全部動いたお \(^o^)/

504:名称未設定
07/10/28 00:31:30 74uJkHwy0
NSMenu のサブクラスを作り、
numberOfItems の中で [self setDelegate:hoge] を(問答無用に)実行してた
Tiger では問題なかったけど、Leopard では setDelegate が numberOfItems を呼ぶので
無限ループになってしまった。

505:名称未設定
07/10/28 07:29:38 TbbSGqL60
NSString lineRangeForRange:
について質問です。これは、改行コードを種別に関わらず含まない
NSRangeを返すと考えてよいのでしょうか?
例えば、CRLF、LF、CRのいずれも取り除いた(改行コードをふく
まない)1行の範囲を取り出してくれるということでしょうか?

ずっと自前で実装してたので・・・orz。

506:名称未設定
07/10/28 11:06:35 +sZmZGVM0
>>505
getLineStart:end:contentsEnd:forRange: の説明によると行とは以下のいずれかで
区切られたものであると書いてある:

U+000D (¥r or CR)
U+2028 (Unicode line separator)
U+000A (¥n or LF)
U+2029 (Unicode paragraph separator)
¥r¥n, in that order (also known as CRLF)

これは lineRangeForRange: でも同じはず。

507:名称未設定
07/10/28 16:51:41 r6e7RucM0
新InterfeceBuilder だけど、クオーツコンポザーみたいに
GUIだけでアニメーション付きGUIを設計できると期待してたんだけど、
やり方がよく分からん。
多少なりともコードは必要なんですかね。

508:名称未設定
07/10/28 17:56:23 VmKk9DlI0
ですね。
特に新IBは、自分のクラスをインスタンスする方法が解らなくてイライラしたw

509:名称未設定
07/10/28 20:18:21 XloRMi6L0
>>506
レスさんきゅです。

結局安直な手法で逃げました。
[NSString stringByTrimmingCharactersInSet:
[NSCharacterSet whitespaceAndNewlineCharacterSet]];

これだとマルチラインには対応できないですけど、とりあえず
は使えそうなので・・・

510:名称未設定
07/10/29 00:56:39 24BH5rD00
>>509
安直と言うか、よくわからんがやりたいのはそれなのか。
ちなみにwhitespace(空白)もトリムされるがいいのかな。

511:名称未設定
07/10/29 22:30:49 ZYf1cvjU0
GCすげえ!!
俺のアプリのメモリ消費量が半分になったorz

512:名称未設定
07/10/29 22:40:21 WF5b1sUq0
それはGCが凄いと言うか・・・

513:名称未設定
07/10/29 22:58:14 3xNL/5J/0
……まあ、orz付けてるのに免じて
少なくともAppleは>>511に福音を齎したと言う事でひとつ。

514:名称未設定
07/10/29 23:33:13 UlbYCa240
Apple製アプリも>>511と大して変わらんよ。
leaks動かすと相当酷いってことが判る。
API自体leakしてるのもあるし。

515:名称未設定
07/10/30 01:46:40 UEjozDia0
それはGCが凄いというか>>511がダメだ

っていうんだったらGCの恩恵を最大限に受けてるってことで、
結果的にはオーライだったと言えるな。
俺のコードもメモリ消費量の低下が半端じゃないw

516:434
07/10/30 07:10:03 kfmeCiZ40
>>437
ずいぶん経ちましたが、NSViewAnimationでいけました。

517:名称未設定
07/10/30 10:38:54 IZLIO/QN0
1.0で書かれたコードでGC有効にするのって、特に何もしなくても良いの?

518:名称未設定
07/10/30 10:53:40 uwVxnpmO0
deallocの内容によるんでねえの。

519:名称未設定
07/10/31 02:16:17 SyaOS2Kn0
萩原本の検証と結論が済んだLeopard対応版を待ってしまう俺はヘタレ

520:名称未設定
07/10/31 19:24:36 AmyfOyxk0
URLリンク(mattgemmell.com)

521:名称未設定
07/10/31 23:15:48 73MMG/Dl0
今HMDTを見て知ったんだけどWooden shipsの人が亡くなったんだね。
昔自作のソフトを載っけてもらったことがあるんだよなあ
49歳なんてまだ若いのに残念

522:名称未設定
07/11/01 00:33:29 25EKZp+g0
OS X使いとしてはitojun氏が無くなったのもかなり残念。37歳、若過ぎる…。

523:名称未設定
07/11/01 04:38:51 m0Ek7Tcl0
[NSFont description]の結果
NSFont = "HiraKakuPro-W3 100.00 pt. P [] (0x00373d50) fobj=0x00372930, spc=33.30";

のspc=33.30が何なのか(たぶん下の余白だと思う)
変更可能ならどうやればいいのか
知ってる人教えて

524:名称未設定
07/11/01 11:29:01 XHMm/9gV0
Fontの属性を変更するのでは無くて、2行目の位置を自前で計算してだせば良いのでは?

525:名称未設定
07/11/01 15:07:06 m0Ek7Tcl0
>>524
Fontはほぼgetterしか無いからそうするしかないのかな
33がline spacingっぽからset 0とできればスマートなのだけど

526:名称未設定
07/11/01 19:21:45 XHMm/9gV0
Fontが編集出来たら原理的に駄目だろう。俺んちのosakaフォントとお前のうちのosakaフォントの
見た目が違ったら駄目じゃん。
うまい方法hじゃ

527:名称未設定
07/11/01 19:22:40 XHMm/9gV0
ごめん、さっき解決方法を思いついたけど忘れたonz


528:名称未設定
07/11/02 04:29:29 gwCUIALD0
NSAlertの

- (void)setShowsSuppressionButton:(BOOL)showButton

でチェックした場合、
また、アラートを表示したい場合はどうすれば良いのでしょうか。
設定の保存場所を教えていただけないでしょうか。

529:名称未設定
07/11/02 18:12:22 B5h15Yrn0
Leopard で動かない報告が多く出ているのを考えると、拡張性が高い Objective-C
が裏目に出ているのかな。つうか、発売が延期になったくせに対応できてない商用ソフト多数
ってところに、Mac の力の弱さを感じる。


530:名称未設定
07/11/02 20:41:01 0Xa0RRTf0
そもそも動かなくなるってのはなんで?
クラスやメソッド自体がなくなるとか?


531:名称未設定
07/11/02 20:52:31 tSiOpZEw0
Tigerの時に廃止を予告されたものは数多くあるが、互換性はまだあるだろ。
Carbonの古いAPIですらまだ動くぞ。

532:名称未設定
07/11/02 20:53:11 PjiJdx3J0
>>529
だって発売日まで最終版が手に入らなかったわけだから仕方ないでしょう
バグなのか仕様なのかはっきりしない部分も沢山あった

>>530
メソッドがなくなるのもあるし、10.5から非推奨関数になったものは正常に動かない場合もある

533:名称未設定
07/11/02 21:14:18 /uepB7fw0
>>532
非推奨の古いAPIの方が変にいじらない分ちゃんと動くよ。
出来たばかりのAPIとか内部構造を改良した(つもり)のAPIの方が
動作が変わったり、バグが出たり消えたりして動かないw

534:名称未設定
07/11/02 21:58:02 EINr1KLa0
ていうかObjCランタイム総入れ替えしてるわけだから
何があってもおかしくないでしょ。

535:名称未設定
07/11/03 16:19:10 fenLA4fy0
Xcode2.5が出ていますが、これはタイガー用ということでしょうか?
現在2.4.2なのですが2.5にあげるメリットはありますでしょうか?
(Leopardでも動くようになるとか)

536:名称未設定
07/11/03 16:50:48 x0ahP+Zd0
・Xcode 2.4.2って存在してたっけ?

せめてこのページくらいは読んでからにしてくれ。
URLリンク(developer.apple.com)

537:名称未設定
07/11/03 23:27:00 NGuLosbV0
ありがとうございます。
Xcodeは2.4.1でした、うろ覚えだったもんで。

英語にちょっと弱いんですが、2.5にするとLeopardでも動く
ということでしょうか。

538:480
07/11/04 00:25:35 RpfIewzZ0
亀レスで恐縮です。
>>480についてなんですが、

@implementation クラス名 のあとにstaticで静的変数を宣言しました。
そして、その変数に値を代入するメソッドを実行したのち、
そのクラスの別のメソッドから戻り値としてその変数の値を
返す、ということをやってみました。

ところが、NSLogでログ出力してみると、変数に値を代入する
メソッドにおいて、値を代入した直後に出力したログには、正しく
代入した値が表示されるのですが、別のメソッドでNSLogで
ログ出力してみると、nill がかえってきてしまいました。

デッバガで見ても、やはり静的変数の値が、値を代入したメソッドを
抜けると、保持されていないみたいです。

静的変数は、宣言したクラス内では値が保持され、どのメソッドから
でも値を入れたり、呼び出したり出来るものと認識しているのですが、
何からおかしい部分はあるでしょうか?
よろしくお願いします。

539:名称未設定
07/11/04 01:21:37 wjfj7/Ph0
その現象が再現する最低限のソースくらい出してくれ。

540:480
07/11/04 01:29:22 RpfIewzZ0
すみません。

@implementation myClass

static NSArray *arrayA;

+(void)ReplaceArrayA:(id)array{

arrayA = array;
NSLog( @"arrayA =%@",[arrayA componentsJoinedByString:@"&"]);

}


+(NSArray *)getarrayA{

NSLog( @"arrayA =%@",[arrayA componentsJoinedByString:@"-"]);
return arrayA;

}




まず、ReplaceArrayA に配列を引数として送り、次にgetarrayAからarrayAを戻り値として
ほかのクラスに値を渡します。

541:名称未設定
07/11/04 01:38:59 lq5eJ6su0
// 「値が保持され」るのはあくまでもアドレスだけということは理解してる?
// 指摘箇所2点

@implementation myClass

static NSArray *arrayA = nil; // (1)何も入っていない場合のためにnilを入れておくべし

+(void)ReplaceArrayA:(id)array{

arrayA = [array retain]; //(2)渡されたarrayが他でreleaseされてもいいようにretainしておくべし
NSLog( @"arrayA =%@",[arrayA componentsJoinedByString:@"&"]);

}


+(NSArray *)getarrayA{

NSLog( @"arrayA =%@",[arrayA componentsJoinedByString:@"-"]);
return arrayA;

}


542:名称未設定
07/11/04 02:04:34 wjfj7/Ph0
>>541

それじゃ leak するべ。

+(void)ReplaceArrayA:(id)array
{
[arrayA autorelease];
arrayA = [array retain];
NSLog(@...);
}


ついでにスタイルの問題を指摘しておくと、

* class 名は大文字で始める (myClass → MyClass)
* method 名は小文字で始める (ReplaceArrayA → replaceArrayA)
* getter method は変数名そのまま。get で始めない (getarrayA → arrayA)
* setter method は set で始める (ReplaceArrayA → setArrayA)

543:名称未設定
07/11/04 02:27:45 hRwgY5Fp0
setter と getter はスタイルだけの問題じゃなくて、
Cocoa binding につかえるかとかにかかわってくるので、
しきたりに従っておいたほうがいいですよ

544:名称未設定
07/11/04 02:43:43 lq5eJ6su0
>>542
>それじゃ leak するべ。
そうだ、スマン・・・

545:名称未設定
07/11/04 07:20:36 0qI6n8f/0
 [ NSThread detachNewThreadSelector: @selector( myThread ) toTarget: selfwithObject: nil ];
という感じで立てたスレッド内で、ファイルをダウンロードする為に
NSURLDownload *mydl = [ [ NSURLDownload alloc ] initWithRequest: req delegate: self ];
してみたのですが、delegateが呼出されなくなりました。
スレッドを立てずNSURLDownloadを使う分には、上手く行くのですが...スレッド内では使えないってクラスという事なのでしょうか?


546:名称未設定
07/11/04 07:53:48 EtU+Y3fk0
>>545
>Note that these delegate methods will be called on the thread that started
> the asynchronous load operation for the associated NSURLDownload
> object.

とリファレンスにある訳だけど、それは大丈夫なの?

547:名称未設定
07/11/04 08:02:48 IbdV1wlP0
IKImageBrowserって便利そうだな~と思ってたら
Bindingじゃ表示できないので、DataSoruceを作ってやらないと
いけないのね。昔のTableViewを使うみたいに。めんどい。

548:名称未設定
07/11/04 08:10:45 0qI6n8f/0
>>546
正直、なにを気をつけろと言っているのか、さっぱりw
まだ、Cocoaの勉強し始めであまり詳しくないんです。

やりたかったのは、
これ
URLリンク(www.big.or.jp)
とこれ
URLリンク(www013.upp.so-net.ne.jp)
を組み合わせて、ボタンをクリックしたら、一定周期で画像をダウンロードするアプリを手習いがてら作ってみようとしたんですけど、すっかり嵌ってしまいました。


549:名称未設定
07/11/04 08:33:21 TZN/ptPy0
>>544
あとで自分でreleaseすれば問題ないじゃんとか思ったのはオレだけでいい

550:名称未設定
07/11/04 09:00:12 EtU+Y3fk0
>>548
あなたが立てたスレッドAの中で mydl を生成したのなら、
そのスレッドAに対して delegate のメッセージが送られますよ、と。

だから、メインスレッドで delegate メソッドを受け取ろうとしてもダメ。

勉強し始めで NSThread と格闘する必要はあまりないような気がします。
やりたかったことは、NSThread で別スレッド立てなくても十分
出来ると思います。NSTimer で一定間隔で NSURLDownload を作って
やればいいと思う。

551:名称未設定
07/11/04 09:08:28 mdbrqZtH0
>>549
甘い。渡された array が arrayA とたまたま同じだった場合に
retain count が増えてしまって開放されなくなる。

まあ static object 一個ぐらいいい気もしますが。

552:540
07/11/04 09:09:37 hK/+lBWK0
>>541-543
ご指摘ありがとうございました。
release や retain に全く気を配ってなかったので、
そのへんを勉強し直したいと思います。

コーディングスタイルについても、アップルのドキュメントが
あったので、参考にしたいと思います。

また何かありましたらよろしくお願いします。

553:名称未設定
07/11/04 09:35:10 mdbrqZtH0
まあ Leopard で ガーベジコレクタがついたので、
retain/release はあんまり気にしなくてもいいんではないかと思うけど。

554:名称未設定
07/11/04 09:47:24 HL69eV8Y0
「あんまり気にしない」んじゃなくて、gc使うなら自分で参照カウントを「管理しない」のが正解じゃないの。gcとretain/releaseって共存できるの?

555:名称未設定
07/11/04 09:52:10 0qI6n8f/0
>>550
丁寧な説明ありがとうございます。
ご指摘の通り、スレッドはこっちへ置いておいて、NSTimerを調べてみます。


556:名称未設定
07/11/04 10:03:53 mdbrqZtH0
>>554
「あまり」気にしない、というのはたんに婉曲語法で使っただけでした、失礼

それとはべつに、retain/release と gc はある意味共存できるらしいですよ。
たとえば、retain/release つかって書いたライブラリを gc つかったプログラムから呼び出すとか。その場合は gc が retain/relase を乗っ取ってそっちが管理してしまうらしいですが。

557:名称未設定
07/11/04 10:38:34 0qI6n8f/0
NSTimerを使って、無事に思った事が出来ました。
ありがとうございました。


558:名称未設定
07/11/04 14:41:54 LrVqL1O30
>>554
ぱっとドキュメント流しただけでまだ勉強中なんだが、GCにするとRelease/Retain
で書いたコードは既出の通りRelease/Retainが無視されるようになる。ただし
-deallocも呼び出されなくなるようなので、dealloc内で解放以外の処理(ノー
ティフィケーションの登録削除とか)してると修正いるんじゃない?

559:名称未設定
07/11/04 15:22:32 AqAwLsu+0
Objective-C ランタイム内でガベージコレクタの書き込み禁止割り当てプリミティブを使用するようにコードをコンパイルします。
コードには、GC 対応であることを示すマークが付きます。GC 対応のマークが付いたアプリケーションは、ランタイムからガベージコレクションを有効にして起動されます。
このアプリケーションでリンクまたは読み込まれるすべての Objective-C コードも GC 対応でなければなりません。GC“必須”としてコンパイルされたコードは、
従来の Cocoa retain/release メソッドを使用しないものと見なされるため、ガベージコレクションを有効にして実行していないアプリケーションには読み込めません。
GC“サポートあり”としてコンパイルされたコードは、従来の retain/release メソッドのロジックも含まれていると見なされるので、どのアプリケーションにも読み込めます。
ガベージコレクションは、Mac OS X 10.5 以降でのみサポートされます。[GCC_ENABLE_OBJC_GC, -fobjc-gc | -fobjc-gc-only]

560:名称未設定
07/11/04 19:01:40 m+9mmSo10
>>528

どなたか、これ分かりませんか。

561:名称未設定
07/11/04 19:31:56 F4mUKxhG0
>>560
ググると参考になりそうなソースが見つかるよ。

562:名称未設定
07/11/04 21:27:53 m+9mmSo10
>>561
ググっても、ゲイツに聞いても見つけられませんでした。
教えていただけないでしょうか。

スポットライトで更新されたファイルをみてもそれらしいのは、見つけられませんでした。

563:名称未設定
07/11/04 21:56:20 eMpGE3Ul0
質問です。
IB で作った GUI のボタンのクリックによって呼び出される
メソッドは、IB でアクションとして登録したメソッドでなければ
いけないのでしょうか。

GUI のボタンクリックから直接クラスメソッドなどを呼び出せれば、
便利だと思うのですが...

よろしくお願いします。

564:名称未設定
07/11/04 21:57:36 g1odPZrS0
>>560
リファレンスのListing 2見る限りそのメソッドは、チェックボックスの表示と
チェック結果の取得ができるだけで、チェック結果は自分でuser defaultsなどに
保存する必要があるように読めます。
その保存結果を消せばよいのではないでしょうか。

565:名称未設定
07/11/04 22:11:04 7bDqXoXS0
なんでこんなところにVB厨が?

566:名称未設定
07/11/04 23:07:40 hkBkZacr0
>>563
便利感がわかりません。

567:名称未設定
07/11/04 23:16:31 +MPnTuBD0
>>563
Visual Studioでオナニーしてきてください。

568:名称未設定
07/11/04 23:21:01 m+9mmSo10
>>564
ありがとうございます。
小さいプロジェクトでやってみましたら、たしかに保存されません。

しかし、保存されている(と言うかチェック後アラートが出なくなった)プロジェクトもあります。
ユーザデフォルトは使っていますが、自分で保存はしてません...、何か別の要因ですかね。

569:名称未設定
07/11/05 00:03:37 cWmVqLLf0
>>563
引数はどうするんだい?

570:563
07/11/05 00:44:49 vL57EKa+0
自分はVisualStudio など使った事がないので、どうして
そのように言われるのか全く分からないのですが...

たとえば、ボタンをクリックすると引数のいらないシンプルな
メソッドhogeを実行させたい場合、ボタンから受け付ける
IBAction のメソッドは、単にhogeにメッセージを投げるという
メソッドを実装するということになります。そうであれば、ワンクッション
おかずに直接一般的なメソッドをボタンから呼べれば便利かと
思ったのですが。

>>566 の便利感が分からないというのは、このようなことで面倒
臭がってる感覚がおかしいということでしょうか?

>>567のレスは、このような考え方が Cocoa の考え方から逸脱
しているという意味ですか?


次ページ
最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch