[表示 : 全て 最新50 1-99 101- 201- 301- 401- 2chのread.cgiへ]
Update time : 05/23 12:40 / Filesize : 139 KB / Number-of Response : 483
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

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



1 名前:名称未設定 mailto:sage [2009/05/04(月) 12:25:25 ID:uDYhVLXL0]
■前スレ
Cocoaはさっぱり!!! version.12
pc11.2ch.net/test/read.cgi/mac/1231853172/

■関連スレ
Macでプログラミング{9}
pc11.2ch.net/test/read.cgi/mac/1216824430/
MacOS XをUnixとして使ってる人の為のスレ その14
pc11.2ch.net/test/read.cgi/mac/1216715423/
Xcode part7
pc11.2ch.net/test/read.cgi/mac/1218774554/
MacでJava その4
pc11.2ch.net/test/read.cgi/mac/1214284891/
RubyCocoa 初心者質問【Leopardバンドル記念】
pc11.2ch.net/test/read.cgi/mac/1193373811/
AppleScript アップルスクリプト 質問、発表 3
pc11.2ch.net/test/read.cgi/mac/1223026902/
iPod touch/iPhone ネイティブアプリ製作 ver.10
pc11.2ch.net/test/read.cgi/mac/1238385226/
Objective-C [ObjC part:4];
pc12.2ch.net/test/read.cgi/tech/1239721860/

2 名前:名称未設定 mailto:sage [2009/05/04(月) 12:26:05 ID:uDYhVLXL0]
■Web
Cocoa wiki
cocoawiki.aerial.st/index.php?FrontPage
ADC
developer.apple.com/jp/
CocoaDevCentral
cocoadevcentral.com/
CocoaDev
cocoadev.com/
Cocoa Blogs
cocoablogs.com/
Cocoaはやっぱり!
www.big.or.jp/~crane/cocoa/
HMDT
homepage.mac.com/mkino2/
OOMORI.com - Cocoaリファレンス
www.oomori.com/cocoafw/
Cocoa Study Blog
blog.cocoa-study.com/
Cocoa Break!
park15.wakwak.com/~concordia/cocoa_break/index.html
Cocoa Bindings Examples and Hints
homepage.mac.com/mmalc/CocoaExamples/controllers.html
Cocoaで遊ぼう!!
homepage.mac.com/t_yamane/prog/index.html
itok's Lab
110k.net/
Vacuous Virtuoso
lipidity.com/
MOSA テクニカルドキュメント
www.mosa.gr.jp/?page_id=19

3 名前:名称未設定 [2009/05/04(月) 12:33:22 ID:2C019ily0]
>>1おる!

4 名前:名称未設定 mailto:sage [2009/05/04(月) 12:44:38 ID:YtFZQwa70]
[1 otsu];

5 名前:名称未設定 mailto:sage [2009/05/04(月) 12:59:37 ID:lCsUNx0R0]
>>1

or乙

6 名前:名称未設定 mailto:sage [2009/05/04(月) 13:05:05 ID:GcKY4X1V0]
[前スレ release];

7 名前:名称未設定 mailto:sage [2009/05/04(月) 14:32:54 ID:MN0mjn8F0]
>>6
まだ retain している奴がいるみたいだ

8 名前:こうか? [2009/05/04(月) 21:01:23 ID:gtujWb2n0]
[前スレ autorelease];

9 名前:名称未設定 mailto:sage [2009/05/05(火) 22:23:48 ID:8tS77hvh0]
早い内に宣言しとくか
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];

10 名前:名称未設定 mailto:sage [2009/05/05(火) 22:30:54 ID:R7vlBhb00]
>>8
>>9
ちょwwwプールなかったのかw



11 名前:名称未設定 mailto:sage [2009/05/05(火) 22:45:51 ID:Eg9DsySZ0]
[pool release];

12 名前:名称未設定 mailto:sage [2009/05/05(火) 23:05:24 ID:8zalga+I0]
おいこら

13 名前:名称未設定 mailto:sage [2009/05/06(水) 00:14:41 ID:FqhT4q3T0]
ええー、ガベコレじゃないの?

14 名前:名称未設定 mailto:sage [2009/05/06(水) 01:03:43 ID:/EEUpqJG0]
ビデオとかオーディオ系のアプリだとガベコレ使わんよね?
なんかパフォーマンス激落ちした記憶が

15 名前:名称未設定 mailto:sage [2009/05/06(水) 01:49:54 ID:ky4Uli1Q0]
適材適所。あんまり厳しいところはObj-Cも使わないかも。

16 名前:名称未設定 mailto:sage [2009/05/06(水) 10:56:57 ID:W6WEme5U0]
どうせ質問出るだろうから

書籍
【Objective-C】
詳解 Objective-C 2.0「荻原本」(ソフトバンククリエイティブ 、08/5)荻原剛志
Dynamic Objective-C「ダイナミック本」(BNN新社、09/3)木下誠
【Cocoa全般】
Mac OS X Cocoaプログラミング「ヒレガス本」(ピアソンエデュケーション、02/06)アーロン・ヒレガス
HappyMacintoshDevelopinTime 2nd Edition「黒本」(BNN新社、04/6)木下誠
HappyMacintoshDevlopingTime 3rd Edition「赤本」(BNN新社、06/5)木下誠
たのしいCocoaプログラミング「たのここ」(BNN新社、08/8)木下誠
【iPhone】
iPhone SDKプログラミング大全(アスキー・メディアワークス、09/1)木下誠
iPhone デベロッパーズ クックブック「エリカ本」(ソフトバンククリエイティブ 、09/2)エリカ・サドゥン
iPhoneSDKの教科書(秀和システム、09/3)赤松正行
基礎からのiPhone SDK(ソフトバンククリエイティブ 、09/4)鶴薗謙吾


17 名前:名称未設定 mailto:sage [2009/05/06(水) 12:09:18 ID:Z1f55c9/0]
CocoaではじめようMac/ iPhoneプログラミング入門(秀和システム、09/3)中野洋一

18 名前:名称未設定 mailto:sage [2009/05/09(土) 09:15:10 ID:wZLTz+uY0]
アイホン本多すぎwww
マクよりアイフォンのほうが売れてるようだ。

19 名前:名称未設定 mailto:sage [2009/05/09(土) 13:04:14 ID:+8i9ZJol0]
>>18
>アイホン本

尼見てるだけだが、しょーもない本もあるようだね
内容はともかく、ネイティブアプリ製作スレの消費もこっちより早いし
ま、参入者増えたのはいいんじゃないの


20 名前:名称未設定 mailto:sage [2009/05/09(土) 15:40:36 ID:s+5zWOUU0]
しょーもないもんで金盗るなよ...



21 名前:名称未設定 [2009/05/09(土) 18:11:57 ID:Lp5s1i6t0]
だって、中の人はおんなじだもん

22 名前:名称未設定 mailto:sage [2009/05/09(土) 23:18:33 ID:wZLTz+uY0]
$99払って大儲け詐欺っぽい傾向だが。
無料ならいっぱいダウンロードされるけど、有料だとさっぱりって現実。

23 名前:名称未設定 mailto:sage [2009/05/09(土) 23:35:58 ID:HiO6fmc80]
>>22
Cocoaを覚える人が増えても、iPhoneアプリを2、3本作っただけで終わりそう。
Macのアプリまで手を出さないだろうな。

24 名前:名称未設定 [2009/05/09(土) 23:47:18 ID:qYG+6Skz0]
>>18
マク?

25 名前:名称未設定 mailto:sage [2009/05/10(日) 00:14:58 ID:ITfhGX7v0]
>>18
アイホンでもアイフォンでもなくアイフォーンだぞ。

26 名前:名称未設定 mailto:sage [2009/05/10(日) 11:10:40 ID:TeTkJtKx0]
あいぽん

27 名前:名称未設定 mailto:sage [2009/05/11(月) 09:41:45 ID:gCZES4s+0]
質問です
nilにメッセージを投げると無視されますが、
たとえば
[mutableArray addObject:object];
で引き数objectがnilだと例外が発生しますよね
こういう場合も素直に無視してくれれば楽だと思うのですが、
レシーバがnilは無視で引き数がnilだと例外発生ということに
何か明確なメリットはあるのでしょうか?

28 名前:名称未設定 mailto:sage [2009/05/11(月) 09:59:40 ID:VQPLhBtK0]
>>27
nilを引数にすると必ず例外発生というわけじゃない。
NSMutableArrayの場合、配列の中身として nilを許可できないので例外になる。
nilじゃなくても許可できない値(スカラー値とか)の場合は例外になる。

レシーバが nilの時にメッセージを送っても nopになるのは言語仕様。
引数が nilの時にどうするかは、クラスとメソッドの指針。引数として nilを許可するメッセージはよくある。

29 名前:名称未設定 mailto:sage [2009/05/11(月) 12:34:41 ID:gCZES4s+0]
>>28
あー、なるほど
たしかに引き数nilの時の振る舞いを言語仕様として定義することはできないですね
スカラー値とnilは区別しようも無いので例外というのもわかります
(NSObjectのサブクラスじゃない場合は全部無視しても良いような気もしますが)

if(object)
[array addObject:object];

といちいちかくのが面倒だなーと思っただけなんですけどね
カテゴリでnilSafeAddObject:とか追加するかな

30 名前:名称未設定 mailto:sage [2009/05/11(月) 21:30:17 ID:tPSgDZwP0]
変な質問ですがよろしくお願いします。
NSLog((NSString *)kMDItemDisplayName);
NSLog((NSString *)kLSItemDisplayName);
とした時、NSLogの結果は
kMDItemDisplayName
LSItemDisplayName
となります。
なぜ後者はkが抜けるのでしょうか?両者が宣言されているMDItem.hとLSInfo.hを見ると
MD_EXPORT const CFStringRef kMDItemDisplayName MD_AVAIL; // CFString
extern const CFStringRef kLSItemDisplayName AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER;
と宣言のされ方が違いますが、これがどのように影響を与えているのか分かりません。
そもそもスレ違いかも知れませんが、、よろしければ解説お願いします。



31 名前:名称未設定 mailto:sage [2009/05/11(月) 21:53:10 ID:Oo5tqRqh0]
>>30
kMDItemDisplayNameには"kMDItemDisplayName"という文字列が入っていて
kLSItemDisplayNameには"LSItemDisplayName"が入っていた。それだけ。

32 名前:名称未設定 mailto:sage [2009/05/11(月) 22:21:47 ID:tPSgDZwP0]
>>31
中の文字列はユーザには見えない別のところで定義されているということでしょうか?

33 名前:名称未設定 mailto:sage [2009/05/11(月) 22:28:37 ID:Oo5tqRqh0]
>>32
そう。externでググれば分かる。
例えばNSString *fusa = @"hage"; ってなってたとしてNSLog(fusa); でhageが表示されるのは当たり前でしょ。
externで宣言と定義や実装を分離してるだけで、それと同じ。

34 名前:名称未設定 mailto:sage [2009/05/11(月) 23:32:22 ID:tPSgDZwP0]
>>33
Cocoaから勉強し始めたのでCはイマイチ分からないんですよね。
もうちょっとググって勉強してみます、すいません。

35 名前:名称未設定 mailto:sage [2009/05/11(月) 23:50:48 ID:jvwak+JR0]
みなさん NSLog() の第一引数に直接表示したい文字列を渡すのはやめましょう。
NSString*hoge=@"%@%@";
だったばあいに
NSLog(hoge)
とするとクラッシュする可能性大です。


36 名前:名称未設定 mailto:sage [2009/05/12(火) 08:05:27 ID:nrYuYvsK0]
>>35
NSString *hoge = [NSString stringWithFormat:@"%@%@",hoge1,hoge2];

じゃなくて?

37 名前:名称未設定 mailto:sage [2009/05/12(火) 08:46:39 ID:n1Sh7mBn0]
cocoaはさっぱりヽ( ´ー`)ノ

38 名前:名称未設定 mailto:sage [2009/05/12(火) 08:56:15 ID:cO5aAwq80]
>>35
なんで?

39 名前:名称未設定 mailto:sage [2009/05/12(火) 09:20:46 ID:5ukzhphT0]
printfとかと一緒の理由だけど

%@を見つけると、引数リストの該当位置にcocoaなObjectがあるとして、-[NSObject description]を送ろうとする。
ところが引数リストが無いので、コンパイラはその辺初期化も何もしていない。
ってことで、該当位置は何が入ってるかは誰も分からない。
そこに、触ってはいけないアドレスが入ってるとEXC_BAD_ACCESSが出たりする。


40 名前:名称未設定 mailto:sage [2009/05/12(火) 10:34:10 ID:nrYuYvsK0]
>>39
それはNSLogの問題じゃなくて%@に値を与えないプログラマの問題だと思うが。



41 名前:名称未設定 mailto:sage [2009/05/12(火) 11:04:57 ID:98lBQIN90]
>>40
ユーザーの入力した文字列をログに吐こうとして
NSLog([textField stringValue]);
とすると、ユーザーが %@ と入力してるとクラッシュしかねないので、
ずぼらせずに
NSLog(@"%@",[textField stringValue]);
と書きましょうといってるだけです。
>>30 さんの場合とかは、
kMDItemDisplayName 内に何がはいってるかわからない、
%@ がはいってない保証がないのであれはマズいと。

42 名前:名称未設定 mailto:sage [2009/05/12(火) 13:38:06 ID:nrYuYvsK0]
>>41
全然そんな事言ってなかっただろ。
だいたい無意味なNSLogを残したまま配布用のビルドをすべきではない。

43 名前:名称未設定 mailto:sage [2009/05/12(火) 22:22:27 ID:prS7MZSPP]
Core Animation で透明ウインドウの上でアニメーションを動かすと
その下に再描画されているウインドウがあるとその再描画のタイミングでちらつきますね。
このちらつきを回避する方法はあるのでしょうか?

44 名前:名称未設定 [2009/05/12(火) 22:31:07 ID:xB/6dHwE0]
NSLog()の出力先はstderrなので、デバックかエラー出力のために使う。

NSLog(hoge);とやってクラッシュする可能性があるのは、hogeの中に運悪く'%'が含まれているときだけだ。
だから、NSLog(hoge)でクラッシュする確率は低い。

デバック中にNSLog(hoge)を書くことによってクラッシュしたなら、そのときにNSLog("%@", hoge)に書き直せばいい。
どのみちデバックが完了したらNSLog()は削除される。

エラー出力のときは、メッセージのフォーマットを考えるはずなので、たぶん大丈夫だ。

45 名前:名称未設定 mailto:sage [2009/05/12(火) 22:56:18 ID:H+KA29wm0]
リリース版でもコンソールにログ出してるアプリは沢山ある。
運悪くも何も、フォーマット文字列攻撃っていう良く知られた方法だから、対策しておくことに越したことは無い。

46 名前:名称未設定 mailto:sage [2009/05/12(火) 23:37:28 ID:9nw2sJcT0]
俺もNSLogにそのまま文字列渡すことは無いが、>>30はそもそもそれが主旨ではないから突っ込まなかった。

47 名前:名称未設定 mailto:sage [2009/05/13(水) 00:17:21 ID:g0aeBdQN0]
>>45
>リリース版でもコンソールにログ出してるアプリは沢山ある。
あるからやってもいい、という解釈はどうなんだろうか。
少なくともユーザーから受け取った文字列をログに吐く事に何も意味が無いと思うが。

48 名前:名称未設定 mailto:sage [2009/05/13(水) 00:25:15 ID:/Ph7rNoz0]
NSLogは第一引数にはdescriptionを投げてくれない。
昔これで躓いた。

49 名前:名称未設定 mailto:sage [2009/05/13(水) 00:27:56 ID:QSUL1DG70]
>>47
それが良い/悪いとか有意/無意とかじゃなくて、フォーマット文字列を解釈する関数全般に
そういう脆弱性があるんだから、常にワンステップ置く癖をつけた方が良いよ、という話。

50 名前:名称未設定 mailto:sage [2009/05/13(水) 00:42:28 ID:yXWILcyg0]
>>30です
kMDItemやkLSItemで取り出したファイル情報を、取り出し時のkeyまま自分のDictionaryに
[dictionary setObject:hage forKey:(NSString *)kMDItemDisplayName];
てな感じで突っ込んだところkLSItemの時はkeyが違うなと気付いたのです。
NSLogに関しては何にも考えず簡単な検証例として挙げてしまいました。



51 名前:名称未設定 mailto:sage [2009/05/13(水) 00:45:30 ID:QSUL1DG70]
>>30
>>35からの流れにレスしているだけなので、気にしないでください。

52 名前:名称未設定 mailto:sage [2009/05/13(水) 00:52:55 ID:g0aeBdQN0]
>>49
癖をつけた方が良いという意味なら、それこそNSLogをコメントアウトしてからビルドする癖をつけるべきだろ。
NSLogの脆弱性について異論は無いが、その主張に固執して本質を忘れてないか?

53 名前:名称未設定 [2009/05/13(水) 00:59:37 ID:noGTpvEW0]
初心者の俺でも論点が全く噛み合ってないことはわかる。

54 名前:名称未設定 mailto:sage [2009/05/13(水) 01:02:42 ID:QSUL1DG70]
>>52
あなたの言う本質が多分私の本質と違うんだろうね。

リリース版で余計なログを出さない、という観点で、コンパイラスイッチで
NSLogのコードを消すのは分かる。

私が言いたいことの本質は、フォーマット文字列を解釈する関数はNSLogに限らず沢山あるので、
直接文字列/オブジェクトを渡さない癖をつけた方がいいよ、ということ。
NSLogだけ対策すればいいわけじゃないんでね。

55 名前:名称未設定 mailto:sage [2009/05/13(水) 06:38:12 ID:g0aeBdQN0]
>>54
こいつアホや

56 名前:名称未設定 mailto:sage [2009/05/13(水) 07:39:36 ID:L+53GQxw0]
NSLogはもういいよ。
別スレでやってくれ。。。。
と思ったけど、このスレになっちゃうのか..orz

57 名前:名称未設定 mailto:sage [2009/05/13(水) 08:47:21 ID:anlyPVMoi]
NSLogスレ立てればおk

58 名前:名称未設定 mailto:sage [2009/05/13(水) 09:04:51 ID:Gwxjdxt/0]
  _  ∩
( ゚∀゚)彡  おっぱい!おっぱい!
 ⊂彡


59 名前:名称未設定 mailto:sage [2009/05/13(水) 09:23:32 ID:HpoQfCTB0]
>>56
一応こんなスレがある
Macでプログラミング{9}
pc11.2ch.net/test/read.cgi/mac/1216824430/

60 名前:名称未設定 mailto:sage [2009/05/13(水) 09:42:55 ID:XdvBQVpW0]
クライアントがアプリを捜査中何か不具合が出たときの為に動作の履歴をログで残しといてと言うからNSLogを使って吐き出してるんだけど
>>52の意見からすると他の方法を使う方が良い?
アプリ自身の不具合によるエラーでなくてネットワークの通信エラーとかね。



61 名前:名称未設定 mailto:sage [2009/05/13(水) 12:49:56 ID:Oz1ba0bW0]
>>60
僕は >>52 の意見には同意出来なくて、リリース版でも
NSLog で情報を console に出すのはためらわないでいいと思う。
箱に入れて売るぐらいの商用ソフトならともかく、
クライアントと緊密にやりとりしてやってる場合なら
コンソールにいろいろ debug 情報を出すのは何も悪くないとおもうが。
というかそのためのコンソールでしょう。

いまも Console.app をたちあげると
アップル製のソフトがいろいろとおもろい情報を吐き出したのがみえますよ。

もちろんバグのせいで NSLog にログを吐きまくって
CPU が 100% になるぐらいしてはいけませんが...

62 名前:名称未設定 mailto:sage [2009/05/13(水) 15:28:08 ID:9LrONd3O0]
僕もそう思いますね。(1)NSLog自体は時と場合に応じて使う、(2)そして第1引数は変数にしない、という感じですかね。

>>43
Core Animation は興味があります。
どのようなちらつきになるのかテストしてみたいので簡単なサンプルなどアップすることはできませんか?

63 名前:名称未設定 mailto:sage [2009/05/13(水) 21:14:20 ID:nVj0Hv1VP]
>>62
用意してみました。この下に動画などリフレッシュするビューがくるとちらついてしまいます。
www1.axfc.net/uploader/Sc/so/1288.zip
password: Core Animation
どうでしょうか

64 名前:名称未設定 mailto:sage [2009/05/14(木) 01:01:26 ID:d28Ohhqc0]
確かに描画のタイミングでちらつきますね。
ためしに Terminal.app の上に持っていっても、描画があるたびにちらっとちらつきます。

で、解決策はわかりませんでした(核爆)

65 名前:名称未設定 mailto:sage [2009/05/14(木) 05:44:36 ID:xPbVTOO6i]
>>64
か、核爆…

66 名前:名称未設定 mailto:sage [2009/05/14(木) 06:41:57 ID:8Z9WzWce0]
なつかしいな。

67 名前:名称未設定 mailto:sage [2009/05/14(木) 06:52:04 ID:d28Ohhqc0]
てへてへ。それはともかくこういうのって仕様なんですかね。
Core Animation 得意な方のご意見をきいてみたすなあ

68 名前:名称未設定 mailto:sage [2009/05/14(木) 08:50:53 ID:7sgh35wY0]
単なるスペック不足

69 名前:名称未設定 mailto:sage [2009/05/14(木) 09:23:58 ID:WqR37kki0]
>>68
同意しかねる

70 名前:名称未設定 mailto:sage [2009/05/14(木) 13:57:15 ID:1Pyn2KioP]
>>64
チェックありがとうございました。やっぱりちらつくんですねえ。
うーむ。Core Animation ってそういうもんなのかなあ。

>>68
最高スペックの Late2008 の MacBook Pro でもそうなのでそれは違うでしょうね。
Mac Pro でもあとでやってみます。



71 名前:名称未設定 mailto:sage [2009/05/14(木) 16:32:00 ID:pfNBB2ufi]
>>70
これ、OpenGL周りの問題っぽいんですよね。以前
ttp://lists.apple.com/archives/quartz-dev/2008/Nov/msg00027.html
が流れて気になって調べたんだけど確かに現象が出る。QTCoreVideoの
TeaPotの上に先のプログラムを置くと下のポットの方にもフリッカーが
出るんです。解決策解らず
このlistでも結論は出てないので、WWDCあたりで突っ込みを入れるのが
正解だと思います。

72 名前:名称未設定 mailto:sage [2009/05/14(木) 16:35:43 ID:pfNBB2ufi]
QTCoreVideo>QTCoreVideo101

73 名前:名称未設定 mailto:sage [2009/05/14(木) 16:42:05 ID:B8qxAkQF0]
WDDCで突っ込みを入れて修正されるのが10.5.8か10.6かで事情が変わってくるな
過去には切り捨てられたバグも…

74 名前:名称未設定 mailto:sage [2009/05/14(木) 16:48:55 ID:aNVF999j0]
>>71
OpenGLじゃなくてQuartzの問題じゃない?
透明ウインドウにOpenGLで直に描画してもチラつかないし。

75 名前:43 mailto:sage [2009/05/14(木) 17:03:33 ID:jO61i7Cr0]
>>71
おっとこのような情報があったとは。なんという有益な情報でしょう。
ありがとうございます。WWDC 参加したかったですが今年もだめでした。
一度行ってみたいなあ。

>>73
へえ。常に新しい環境を使っていける環境の人はいいですけど、そうでない人には厳しいですねえ。

>>74
ちょっと思い出して Quartz Comporser で作ったコンポジションを透明ウインドウにのせるサンプル
があったのでひっぱりだしてきてやってみました。それは見事にちらつかずに滑らかに動いていました。

Quartzの問題なのか、Core Animation が Quartz とお話している部分の問題なのか、OpenGL 部分なのか。
その辺のdeepな内部の実装についてはさっぱりわかりませんねえ。

76 名前:43 mailto:sage [2009/05/14(木) 17:07:17 ID:jO61i7Cr0]
どなたか WWDC 09 参加される方でこの問題にご興味のある方は是非是非質問をぶつけてきていただきたいです><

77 名前:名称未設定 mailto:sage [2009/05/14(木) 17:53:28 ID:aNVF999j0]
描画が別スレッドで行われているのが原因だと思われ。
QuartzComposerのベースが同じなら、メインスレッドで描画する方法があるという事なんだろうか?

78 名前:名称未設定 mailto:sage [2009/05/14(木) 21:25:12 ID:pfNBB2ufi]
>>77
まるっきり別アプリなので同一スレッドで動く事は困難では?

各種描画は最終的にはOpenGLのパイプラインに押し込まれ(その後H/Wレンダラ
なりにわたる)処理される約束に現在の実装ではなっているはずなので、そこ
でなんとか協調するための手段があるはずなんですよね、QuartzComposerなん
かはそのへんまじめにやってる(というか、立ち位置がOpenGLに近い)っぽく
てCAはパフォーマンス優先になっているような。
パフォーマンスを多少犠牲にしても同期を取るモードがあっても良さそうなの
で、そのへんが担当者に聞けると、、、

私も残念ながらいろんなあおりを受けて今年はおやすみ。


79 名前:名称未設定 mailto:sage [2009/05/14(木) 22:31:24 ID:aNVF999j0]
>>78
何を作りたいか分からないけど、OpenGLで書いた方が早いんじゃない?

80 名前:名称未設定 mailto:sage [2009/05/14(木) 22:58:50 ID:vR6rv+/10]
>>78
CAってbeam syncって概念ないのかい?



81 名前:名称未設定 [2009/05/14(木) 23:41:46 ID:kzoneQIR0]
>>78

>各種描画は最終的にはOpenGLのパイプラインに押し込まれ処理される約束に現在の実装ではなっているはずなので

Quartz DebugでQuartz Extreameをoffにしても、ちらつきが収まらないので(多少ちらつく頻度が少なくなるような気はするが)、原因は別のところにあるのではないか?



82 名前:名称未設定 mailto:sage [2009/05/15(金) 00:16:10 ID:98daYchR0]
CALayerに設定されているCIFilterを外すと、ちらつかなくなるね。
あと、ウインドウにタイトルバーを付けて、ウインドウをドラッグで動かすと、背景が静止画の場合であってもちらつくねぇ。
Core Image側に問題があるのかな? どちらかというと。

83 名前:名称未設定 mailto:sage [2009/05/15(金) 00:26:31 ID:LM6j+XPe0]
Quartz Compositorじゃね?

84 名前:名称未設定 mailto:sage [2009/05/15(金) 23:11:26 ID:Di8dS7Xy0]
サンプルコードで
BOOL b = NO;
b |= [hoge hage];
というようなのを見かけました。これはどういう意味になるのでしょう?
Cocoaの教本には載ってませんでしたが、、。

85 名前:名称未設定 mailto:sage [2009/05/15(金) 23:13:50 ID:Vreasx71P]
cの論理演算子を調べてみては

86 名前:名称未設定 mailto:sage [2009/05/15(金) 23:19:47 ID:rNZ6L9VR0]
ホゲハゲ

87 名前:名称未設定 mailto:sage [2009/05/15(金) 23:20:23 ID:Di8dS7Xy0]
&& || != などは分かるのですが、、どうしても|=が出てきません。
記号だけのものを探すのって大変ですね。

88 名前:名称未設定 mailto:sage [2009/05/15(金) 23:21:54 ID:Di8dS7Xy0]
すいません、C言語 演算子でググったら一覧みたいなのが書いてあるサイトをいくつか見つけられました。
見て勉強してみます。

89 名前:名称未設定 mailto:sage [2009/05/15(金) 23:34:04 ID:IXApvD0U0]
>>84
正直そのサンプルコードは良くないとおもう
| はビット単位 OR だから、 BOOL に適用するのは良くないべ。

90 名前:名称未設定 mailto:sage [2009/05/15(金) 23:38:16 ID:Di8dS7Xy0]
マジですか、Appleのサンプルコードだからって鵜呑みにしちゃいけないんですね。
なんかショック。



91 名前:名称未設定 mailto:sage [2009/05/15(金) 23:48:37 ID:IXApvD0U0]
>>90
バグってるわけではないがバッドノウハウだと思います。
NO が 0 で、YES が 1 なのは Cocoa では決まってるので、
まあビット単位 OR | も論理 OR || も一緒ですが、
Cocoa でない C のコードでは、0 が偽、0以外の整数は全て真と
解釈されることになってるので、
論理演算とビット演算の結果が異なることもありえますので...

92 名前:名称未設定 mailto:sage [2009/05/16(土) 07:44:18 ID:nOx+3fs60]
if(Cond)ならどっちでも通じる。分かっててやる分にはいいんじゃね。
あんまり好きじゃないけど。

93 名前:名称未設定 [2009/05/17(日) 00:35:50 ID:vTJjRQm+0]
分かりにくかったら済みません。

TwitterPodやSnowRabbitみたいなログ表示をするには
どうすればいいでしょう?折り返しのある文字列を綺麗に表示したいのです。
NSTableViewとかNSTextFieldCellあたりを探してみたのですが
見つかりませんでしたorz
自前で作るにしても方法が思いつきません。

94 名前:名称未設定 mailto:sage [2009/05/17(日) 00:50:38 ID:ARuKMIRg0]
>>93
NSTextFieldCellのLayoutをWrapsに設定してみると、どうでしょう?
Title, Placeholder, alignment, Border, Layout
と並んでいるやつです

95 名前:名称未設定 mailto:sage [2009/05/17(日) 00:56:53 ID:ARuKMIRg0]
捕捉、もっと下の方にあるLine BreaksもWord Wrapに設定する必要ありますね。
さらに複数行を表示するので、NSTableViewの行の高さ等もちょっと調整
する必要がありそうですけれど

96 名前:名称未設定 mailto:sage [2009/05/17(日) 15:17:22 ID:dcs8lUAz0]
わざわざNSTableViewに吐く理由は?
ただのエディットビューで十分じゃないかな...

97 名前:名称未設定 [2009/05/17(日) 23:42:48 ID:Fgw9CMGw0]
>>96
上げられてるソフトを確認すれば分かるかと。

98 名前:名称未設定 mailto:sage [2009/05/18(月) 00:21:17 ID:Stz5fwHx0]
サードパーティのアプリなんて共通認識にあるわけないし、回答者がわざわざ探しにいけとでも?
という疑問は感じる

99 名前:名称未設定 mailto:sage [2009/05/20(水) 04:41:57 ID:yuP2p8H10]
にるぽ

100 名前:名称未設定 mailto:sage [2009/05/20(水) 07:16:13 ID:XegvAAnYi]
Cocoa100%(σ・∀・)σゲッツ!!



101 名前:名称未設定 mailto:sage [2009/05/20(水) 08:17:42 ID:T3yMgwWc0]
>>100
何かの書籍?個人ブログしかヒットしないんだけど

102 名前:名称未設定 mailto:sage [2009/05/20(水) 09:09:14 ID:3yEx7CxS0]
>>101
ゆとり乙

103 名前:名称未設定 mailto:sage [2009/05/20(水) 09:28:53 ID:T3yMgwWc0]
>>102
俺もそこそこいい歳だよおっさん

104 名前:名称未設定 mailto:sage [2009/05/21(木) 01:12:24 ID:J06HCPEy0]
CALayerについて質問です
ttp://journal.mycom.co.jp/special/2007/coreanimation/002.html
上記ページの下部にあるサンプルコードを例に挙げます。
このサンプルコードをそのままビルドすると正常に画像が表示されるのですが、
- (void)awakeFromNib
{
//...
}
- (IBAction)doAnimation:(id)sender
{
}
となっているのを
- (void)awakeFromNib
{
}
- (IBAction)doAnimation:(id)sender
{
//...
}
とごっそり移動しました。つまりCALayerの設定をawakeFromNibからIBActionでの実行に変更しました。
これをビルドして実行すると画像がちゃんと表示されません。
なぜこのようなことが起きるのかさっぱり分かりませんので教えてください。よろしくお願いします。

105 名前:名称未設定 mailto:sage [2009/05/21(木) 02:41:54 ID:gvzv7DBV0]
>>104
Viewのアウトレットは繋がってる?
ViewにsetNeedsDisplay:は送ってみた?

106 名前:名称未設定 mailto:sage [2009/05/21(木) 03:29:48 ID:J06HCPEy0]
>>105
はい、つながっています。ViewへのsetNeedsDisplay:もLayerへのsetNeedsDisplayも送ってみました。
awakeのタイミングでやると正しく表示されるんですよね。IBActionでやるとCALayerのbackgroundColorは正しくセットされるのですが、contentsに画像を設定した時におかしくなります。
Layer周りをいろいろ実験してておかしいなと思い、シンプルなソースを探してきて試してみたところ同様にうまくいかなかったのでさっぱり状態になり質問させてもらいました。
良かったら上記のサンプルコードで試してみてください。

107 名前:名称未設定 mailto:sage [2009/05/21(木) 03:38:44 ID:gvzv7DBV0]
>>106
やってみた。
awakeFromNibのままですら正常に表示されなかったw
こりゃ元のコードに問題がありそうだね。暇があったら直してみる。

108 名前:名称未設定 mailto:sage [2009/05/21(木) 04:31:29 ID:J06HCPEy0]
>>107
んー、なぜ結果が違うのでしょう。ちなみにOSは10.5.7で試しました。
夜になると思いますが、時間あればAppleのサンプルコード探して試してみてまた報告しようと思います。

109 名前:名称未設定 [2009/05/21(木) 11:37:15 ID:dRp23ibU0]
すいません。iPhoneアプリ開発初心者です。
なので教えてほしいのですが、
今苦戦しているのは別クラスからの画像の処理です。
+drawImageというクラスに画像名を飛ばしそこにあるImageやViewを使って
表示させたいのですが、状態としては警告が出ます。
警告文的にはaddSubviewが+addSubviewが何たら・・・
と言われます。

なので[??? addSubView];←ここに何を入れれば良いのかが判りません。
drawImageが入ってるのはGdrivControllerです。
これをMainViewとして使ってます。

110 名前:名称未設定 mailto:sage [2009/05/21(木) 11:38:42 ID:gvzv7DBV0]
>>109
はっきり言ってそのレベルじゃiPhone開発は無理。CocoaどころかCの基礎とオブジェクト指向から勉強し直してこい。
あと日本語と英語も。



111 名前:名称未設定 mailto:sage [2009/05/21(木) 12:01:01 ID:lD5cj5l2i]
最近>>109みたいなやつ沸くけどただの荒らしやないのん?
それとも俺が知らんだけでこんなのが現実に結構いるのん?

112 名前:名称未設定 mailto:sage [2009/05/21(木) 12:06:55 ID:R3inFz3N0]
>>109
Xcodeスレで回答もらってるのにシカトしてマルチするの?

113 名前:名称未設定 mailto:sage [2009/05/21(木) 12:20:19 ID:cyO5iFqa0]
>>111
>>110も煽り過ぎだと思うが、質問するレベルにもなってないのは確かだな。
2chで聞きまくるより、一冊でも入門書を読んだ方が本人のためになる。

114 名前:名称未設定 [2009/05/21(木) 12:36:49 ID:dRp23ibU0]
すいませんJava開発しか経験が無いもので・・・
一応ObjectiveC2.0やCocoa、クックブックは読んでるんですが・・・

115 名前:名称未設定 mailto:sage [2009/05/21(木) 12:47:30 ID:cyO5iFqa0]
>>114
Javaで開発できるならObj-Cが理解できない事は無いと思うけど…。
単に文法を理解してないという事なら、なおさら入門書を最後まで読んでからにした方が良いと思う。

116 名前:名称未設定 mailto:sage [2009/05/21(木) 13:18:45 ID:Zr/4CmfOi]
>>114
質問するならまず他人に伝わるように文章を書けるようになってくれ。

「飛ばす」「入れる」「入ってる」等の曖昧で私的な定義の言葉じゃなく、技術書等で使われている一般に通じる用語を使う。
警告が出るなら「〜なんたら」で済まさずにその警告をそのまま伝える。
用語は正しく使う。+drawImageとやらはクラスではなくクラスメソッドのことではないか?
自分で試してみたことをはっきりと伝える。日本語で伝えるのが難しいならソースコードを添える。
そもそも、あなたがやりたい事が分からない。最終的に何をしたいのか5W1Hを明確にして記述する。

これらが出来ないなら書き込んでも誰も答えられないです。

117 名前:名称未設定 mailto:sage [2009/05/21(木) 13:24:56 ID:LZUURm740]
>警告文的にはaddSubviewが+addSubviewが何たら・・・

「何たら」と書く時点でプログラマじゃないよ。
エンドユーザーの「なんかエラーが出るんですけど」と一緒。


118 名前:名称未設定 mailto:sage [2009/05/21(木) 13:47:20 ID:A08ud0la0]
>>114
> すいませんJava開発しか経験が無いもので・・・

とても他の言語で開発経験があるとは思えないぞ>>109では。
それくらい意味不明。

+drawImageの中で -addSubview使ってるってこと?
画像名を飛ばすって何?画像名を引数で渡すのか?

エスパーしてみたが、とりあえずマルチしといてシカトは良くない。

119 名前:名称未設定 mailto:sage [2009/05/21(木) 13:59:18 ID:RrJzICdh0]
兵庫県か大阪府の小学生じゃないの?
いま、臨時休校だし。

120 名前:名称未設定 mailto:sage [2009/05/21(木) 13:59:58 ID:cyO5iFqa0]
>>118
理屈じゃない!感じるんだ!!



121 名前:名称未設定 mailto:sage [2009/05/21(木) 14:21:12 ID:A08ud0la0]
>>120
              ̄ ̄ ̄ ̄-----________ \ | /  -- ̄
      ---------------------------------  。←画像名
           _______----------- ̄ ̄ ̄ ̄ ̄
                     ∧ ∧    / / |  \   イ
                    (   )  /  ./  |    \ /
                 _ /    )/   /  |     /|
                 ぅ/ /   //    /   |    / .|
                ノ  ,/   /'    /    |│ /|
 _____      ,./ /∠__|     /   .─┼─ |
(_____二二二二)  ノ (\__,/|    / ┼┐─┼─
              ^^^'  ヽ, |  |   /.  ││  .│


122 名前:名称未設定 [2009/05/21(木) 14:38:24 ID:dRp23ibU0]
GdrivControlerというファイルにdrawImageという
画像を表示させる処理を置いています。
画像を表示させたいときは画像の名前を[GdrivController drawImage:@"title.png"];
という風にしています。
このdrawImageの中身は
+(void)drawImage:(NSString*)name{
UIImage* img = [UIImage imageNamed:name];
UIImageView* dview = [[UIImageView alloc] initWithImage:img];
このあとの表示部分で警告やエラーになります。
入力してるのが[GdrivController.view addSubview:dview];
だと syntax error before `.` token.
[GdrivController addSubview:dview];だと
'GdrivController' may not respond to `+addSubview`というエラーになります。
}

123 名前:名称未設定 mailto:sage [2009/05/21(木) 14:43:42 ID:nHVTUb140]
>>122
× +(void)drawImage:....
○ -(void)drawImage:....

とか?

124 名前:名称未設定 mailto:sage [2009/05/21(木) 14:52:07 ID:8ouOVGBPi]
>>122
やればできるじゃないか。

まず、
>入力してるのが[GdrivController.view addSubview:dview];
>だと syntax error before `.` token.

>[GdrivController addSubview:dview];だと
>'GdrivController' may not respond to `+addSubview`というエラーになります。

これらは両方とも、インスタンスに送信すべきメッセージをクラスに送っていることが間違いです。

クラスとインスタンスの違いは分かりますか?
クラスメソッドとインスタンスメソッドの違いは分かりますか?
インスタンスの作り方は分かりますか?

たのcocoでも詳解ObjC 2.0でも、オブジェクト指向の基本を解説してる部分を読み直してください。

125 名前:名称未設定 mailto:sage [2009/05/21(木) 14:54:10 ID:cyO5iFqa0]
>>122
for (int i = 0; i<100; i++) {
NSLog(@"入門書を読んでから出直せ。");
}

126 名前:名称未設定 mailto:sage [2009/05/21(木) 15:21:51 ID:8ouOVGBPi]
>>122
あとGdrivControllerってのは何者?
もしUIViewControllerのサブクラスで、IBなりどこかでインスタンス化されてるものなら、
+drawImage:とやらをインスタンスメソッドにしたうえで
GdrivControllerのインスタンスに-drawImage:を送信するようにして、
先述のエラーの出ているところを
[self.view addSubView:dview]
とすれば多分いいんじゃないかと思うよ。

127 名前:名称未設定 mailto:sage [2009/05/21(木) 15:23:36 ID:RrJzICdh0]
クラスメソッド
Obj-C 頭に+が付いてる
Java static が付いてる。

インスタンスメソッド
Obj-C 頭に-が付いてる。
Java staticが付いてない


Javaの方は大味な説明だけど、こういうことです。
インスタンスを生成してそのインスタンスに対してしか実行できないのがインスタンスメソッドです。


128 名前:名称未設定 mailto:sage [2009/05/21(木) 15:29:44 ID:cyO5iFqa0]
まさに「Cocoaはさっぱり!!!」

129 名前:名称未設定 mailto:sage [2009/05/21(木) 15:32:08 ID:BiCFA5Fu0]
物事がさっぱりだというのはその物事をある程度勉強してみてはじめて使う言葉ですよ。
入門事項すら勉強していない人が「あれはさっぱりだ」と言うことはできません。

130 名前:名称未設定 mailto:sage [2009/05/21(木) 15:33:00 ID:cyO5iFqa0]
>>129
Cocoaは(奇麗)さっぱり(忘れた事にする)!!!



131 名前:名称未設定 [2009/05/21(木) 16:08:59 ID:dRp23ibU0]
GdrivControllerはMainView.xibに使用しているUIViewControllerで作ったもので、
ViewにはGdrivというクラスを使っています。

132 名前:名称未設定 mailto:sage [2009/05/21(木) 16:33:35 ID:gvzv7DBV0]
>>131
だったらGdrivControllerの、しかもクラスオブジェクトがaddSubView:というメソッドを持ってない事くらい分かるでしょ。
addSubView:はUIViewのインスタンスメソッドなんだから。

133 名前:名称未設定 mailto:sage [2009/05/21(木) 16:52:43 ID:cyO5iFqa0]
教える側が基礎を説こうとしているのに、聞く側が回答しか求めていない。
これでは何度説明しても理解できるわけないよ。

134 名前:名称未設定 [2009/05/21(木) 18:27:52 ID:dRp23ibU0]
GdrivControllerにUIViewで作ったGdrivのクラスを追加している場合に
[GdrivController.Gdriv addSubview:dView];とした場合もsyntaxエラーになります。
なので、
UIView* gView = [[Gdriv alloc] initWithFrame:CGRectMake(0,0,50,50)];
[gView addSubview:dView];にするとエラーは無くなりますが、シミュレーターには表示されません。


135 名前:名称未設定 mailto:sage [2009/05/21(木) 18:57:16 ID:JiQiRyUI0]
>>134
もう一度 >116 をよみかえしてくだしあ。あと、多分今のあなたの技術では
動くアプリは出来ないでしょう。Java で開発していて、クラスメソッドと
インスタンスメソッドが分からないなら、一からオブジェクト指向言語の
概念から、さらにC、Cocoa を勉強した方が良いです。多分メモリ管理も。
/* 俺もJavaからきたけど、IBのおかげでUIまわりはJavaよりも簡単だぞ。*/

136 名前:名称未設定 mailto:sage [2009/05/21(木) 19:00:14 ID:K6oJPq9D0]
        ,.-─ ─-、─-、
      , イ)ィ -─ ──- 、ミヽ
      ノ /,.-‐'"´ `ヾj ii /  Λ
    ,イ// ^ヽj(二フ'"´ ̄`ヾ、ノイ{
   ノ/,/ミ三ニヲ´        ゙、ノi!
  {V /ミ三二,イ , -─        Yソ
  レ'/三二彡イ  .:ィこラ   ;:こラ  j{
  V;;;::. ;ヲヾ!V    ー '′ i ー ' ソ
   Vニミ( 入 、      r  j  ,′
   ヾミ、`ゝ  ` ー--‐'ゞニ<‐-イ
     ヽ ヽ     -''ニニ‐  /
        |  `、     ⌒  ,/
       |    > ---- r‐'´
      ヽ_         |
         ヽ _ _ 」

     ググレカス [ gugurecus ]
   (西暦一世紀前半〜没年不明)


137 名前:名称未設定 mailto:sage [2009/05/21(木) 19:24:38 ID:KSjLlpNRi]
>>134
クラス名の次にドットが来ることは無いってば。常に文法エラー。
さらにドットの左側にクラス名が来ることもあり得ない。
ドットシンタックスについては、詳解ObjC 2.0の「キー値コーディング」の章を熟読して理解できてから使ってくれ。

138 名前:名称未設定 mailto:sage [2009/05/21(木) 19:39:58 ID:R3inFz3N0]
>>134
作りたいアプリの仕様を書けよ
親切な誰かが請け負ってくれるかもしれないからさ
こんな無意味な問答を続けるよりはよっぽど建設的だぞ

139 名前:名称未設定 mailto:sage [2009/05/21(木) 19:46:27 ID:lOzpjpIa0]
>>135
JavaじゃなくてJavaScriptでした、というオチに100ペリカ

140 名前:名称未設定 mailto:sage [2009/05/21(木) 21:02:45 ID:gvzv7DBV0]
>>108
あれからちょっと試してみたんだが、そのサンプルのままだと画像が白い塗りつぶしになってしまって表示されなかった。
ところが画像ファイルを"/Library/Desktop Pictures/Tiles Blue.jpg"にすると正常に表示された。doAnimation:のほうにごっそり移しても。
俺の方の問題はつまり、画像ファイルの読み込みにあったらしい。Earthファイルもあるのだが、サイズかなにか制限でもあるんだろうか。



141 名前:名称未設定 mailto:sage [2009/05/21(木) 21:37:12 ID:JiQiRyUI0]
>>139
そうかもねぇw

>>137
>クラス名の次にドットが来ることは無いってば。常に文法エラー。
ドットシンタックスと[ ]の混在が嫌いだから知らんかった。調べてみたら、
@interfaec Hoge :NSObject @end
@implementation
static id piyo = @"piyo";
+ (id) fuge { return @"fuge"; }
@end
に対して、Hoge.fuge は仰る通り駄目。でも、[Hoge valueForKey:@"fuge"]
って有効なんだね。クラスにKVCなんてやった事無かったけど面白い。
ドットシンタックスが駄目なのは、コンパイラのみのチェックなんかな?
[Hoge valueForKey:@"piyo"] … ×
class_getClassVariable([Hoge class], "fuge") … ×
class_getClassVariable(object_getClass(objc_getClass("Hoge"))), "fuge") … ×
class_getClassVariable(object_getClass(objc_getClass("Hoge"))), "isa") … ○
やっぱり、isa しか入ってないのか。入れる方法ってあるんかな?

142 名前:名称未設定 mailto:sage [2009/05/21(木) 22:00:16 ID:lWvBtsqMi]
>>141
Hoge *hoge = [Hoge valueForKey:@"alloc"].init;

143 名前:名称未設定 mailto:sage [2009/05/21(木) 22:09:52 ID:JiQiRyUI0]
>>142
+alloc が定義されていて(当然だが)、インスタンスのidが返ってきてたら、
コンパイル成功して当然でしょ?init はインスタンスに対して送られてるのだから。
何が言いたいのか分かりません。

144 名前:名称未設定 mailto:sage [2009/05/21(木) 23:49:55 ID:J06HCPEy0]
>>140
謎が解けた!
サンプルコードのメソッドの最後に
[layer setNeedDisplay];
[layer display];
[backgroundLayer setNeedsDisplay];
[backgroundLayer display];
[_view setNeedDisplay:YES];
これらを組み合わせて入れていろいろ試してみたけど、結局のところ
[_view display];
これが正解だったみたい。
ちなみに、
@"/Library/Desktop Pictures/Nature/Earth.jpg" の画像を使用した時
[backgroundLayer setNeedsDisplay]; や[backgroundLayer display];
すると画像が白塗りで表示されないけど、
mac.hitobashira.org/up/src/maka0157.png

@"/Library/Desktop Pictures/Tiles Blue.jpg" の画像を使用すると
[backgroundLayer setNeedsDisplay]; では以下のような画像に
mac.hitobashira.org/up/src/maka0158.png

[backgroundLayer display]; だとアプリがクラッシュするという事態が起きた。
デバッガ見たらCGSConvertBGR888toRGBA8888で止まってた。
他の画像ではテストしてないので、ファイルサイズか、フォーマットか何の違いに起因するものなのか分からないけど
画像によって挙動が変わるというのはCALayerの作りが甘いってことなのか?

他のLayerクラスも触ってて思ったけど、アプリのRunLoopと違うタイミングで動いてるので
生成や、特に描画のタイミングなどはしっかり理解しないと正しい制御ができないような気がする。
長くなりましたがこんなとこ。
詳しい人いたら解説お願いしたいところです。

145 名前:名称未設定 mailto:sage [2009/05/22(金) 00:21:34 ID:KukDsc7l0]
OpenSSHって使えますかね?


146 名前:名称未設定 mailto:sage [2009/05/22(金) 00:44:16 ID:qS/6Qjqe0]
>>145
何を勘違いしているのかしらんが、
Objective-C は C のライブラリは何でも使える

147 名前:名称未設定 mailto:sage [2009/05/22(金) 10:08:59 ID:Hk5Td5Ah0]
日記はもういいよ。iPhone板にプログラミングスレ立ててそっちでやってくれ。
基礎的なことも学んでないのにつまづく度に書き込まれたんじゃたまらん。

148 名前:名称未設定 mailto:sage [2009/05/22(金) 11:24:36 ID:WFQcCVtF0]
ここはCocoaスレだぞ、なんつって

149 名前:名称未設定 mailto:sage [2009/05/22(金) 11:26:54 ID:M58OI3GZ0]
別にいいんでねぇの?
またーり推奨しとく。

150 名前:名称未設定 mailto:sage [2009/05/22(金) 11:33:52 ID:WFQcCVtF0]
>>149
>>147はiPhone開発スレの誤爆だと思われ



151 名前:名称未設定 mailto:sage [2009/05/26(火) 17:04:46 ID:mpU7elWh0]
今 Xcode で deployment (release) と development のどちらでコンパイルされているかによって
処理を振り分けることはできるでしょうか?
例えば開発ビルドのみ NSLog() してみたいという用途です。
# Xcode スレの方が適切でしょうか?

152 名前:名称未設定 mailto:sage [2009/05/26(火) 17:22:23 ID:Q2hth1EJ0]
Release用ビルド設定のPreprosessor MacrosにNDEBUGを設定して

#ifndef NDEBUG
NSLog(@"Debug Mode");
#endif

でいけるとおも。

153 名前:名称未設定 mailto:sage [2009/05/26(火) 18:52:52 ID:lNXmn4af0]
>>152
NDEBUGというマクロ名は意図的に選んでるの?

154 名前:名称未設定 mailto:sage [2009/05/26(火) 18:59:40 ID:ANgsl3SV0]
assert.h 関係ですね

155 名前:名称未設定 mailto:sage [2009/05/26(火) 20:09:00 ID:Q2hth1EJ0]
>>153

>>154さんご指摘の通りです。
自前で用意してもいいんですが、慣例的に利用されているようなので
特に理由がない限りNDEBUGマクロ使ってます。

Cocoaネタで言うと、NSAssert[1-5]()なんかは
NS_BLOCK_ASSERTIONSって独自のマクロ定義してますね。

以下補足です。
ログ程度で毎回 #ifndef NDEBUG ... #endif は面倒なので

/* MyDebug.h */
#ifndef NDEBUG
 #define MyLog(fmt, ...) NSLog(fmt, __VA_ARGS__)
#else
 #define MyLog(fmt, ...)
#endif

なんてのがよく使われてるみたいです。
ちなみに__VA_ARGS__は、C99の機能なので
ビルド設定の変更もお忘れなく。

長文失礼。


156 名前:名称未設定 mailto:sage [2009/05/26(火) 20:13:50 ID:8gfXRQlR0]
>>152
あとは
#ifndef NDEBUG
#define NSLog(...)
#endif
でNSLog()自体無効にするとか。


157 名前:151 mailto:sage [2009/05/26(火) 21:07:20 ID:Hh/s6JXoP]
>>152
>>155-156
やってみたところうまく切り分けて動作しました。
ありがとうございました。
NSLog自体を無効にするというのも面白いですね。今まで残していたものも全てユーザに見せないようにできるという楽でいい方法だと思いました。



158 名前:名称未設定 mailto:sage [2009/05/27(水) 08:12:40 ID:5crTst2N0]
>>157
重要な NSLog は残しておくのも吉だとおもう
フリーウェア書いてるが、それのおかげでバグがあったときに
ユーザーさんから log file を送ってもらって
バグが究明出来たことが何回かあるし。

Apple 製のソフトだって大量にコンソールにログをだしてるから
ぼくらも多少ログを吐いてもいいんじゃないかと。

159 名前:名称未設定 mailto:sage [2009/05/27(水) 13:30:26 ID:rQRiXzwK0]
重要な物ならいいけど、ディスクアクセスが発生するので出来るだけ避けて欲しい。

「なんかもっさりだな」って思ったら毎秒ぐらいのペースでログが出てて、連続
ディスクアクセスのパフォーマンスが落ちてたとかある。

まあ、かな漢字変換のディスクアクセスがそんな感じなんだが、、、


160 名前:151 mailto:sage [2009/05/27(水) 20:18:45 ID:coL084HnP]
なるほど確かに重要な情報は残しておきたいし、ディスクアクセスの妨げになるような出力も避けるべきですね。
勉強になりました。



161 名前:名称未設定 mailto:sage [2009/05/27(水) 20:23:41 ID:DNUe0f2p0]
Preview.app なんかがやっているのですが、
オープンしたファイルが Finder やら mv などでリネームされても
アプリがアクティブになったときにリネームをアプリが即座に知って
ファイル名表示を更新しているのです。
ファイルが別のディレクトリに移動されてからリネームしてもも同様にすぐ反映しています。

フルパスではない何かinodeのようなものか何かを保持しているのだと思うのですが、
これは Cocoa 的にはどのクラスやフレームワークを使えば実現できるのでしょうか。

また即座に通知されるのはキー値監視のようなことがファイルに対しても出来るのでしょうか。


162 名前:名称未設定 mailto:sage [2009/05/27(水) 21:10:08 ID:AJ4glpaE0]
>>161
それは確かCocoaだけでは実現できなかったと思います。
CFURLGetFSRefというCarbonの関数を使ってファイルへのエイリアスを取得し、
それをまた実パスに戻したりとかちょっと手間のかかる事をやります

163 名前:名称未設定 mailto:sage [2009/05/27(水) 22:03:43 ID:DNUe0f2p0]
>>162
ありがとうございました。
CFURLGetFSRef 周りの Carbon の関数やFSRefなどを調べてそのような処理を書いてみます。
(すみません、Cocoaではスレ違いだったのですね。)


164 名前:名称未設定 mailto:sage [2009/05/27(水) 22:18:18 ID:AJ4glpaE0]
>>163
Cocoaのメソッドだけでこなせない時にCarbonのコードを内包するのは
よくやられる手法で、まんざらスレ違いというわけでもなかったり(笑)
できればそろそろNSFileManagerあたりがサポートしてくれるとありがたいな〜と
(もしかすると既にあったりして...)

165 名前:名称未設定 mailto:sage [2009/05/27(水) 22:28:36 ID:BSyot79b0]
>>163
NDAlias等のラッパーを利用するのが、簡単でしょう。



166 名前:名称未設定 mailto:sage [2009/05/31(日) 09:34:37 ID:LG4aWmHm0]
WebViewでRealAudioのファイルを再生したいのですが
同じHTMLソースをsafariでは正常に再生できるのに
自分で作っているものではRealAudioのプラグインは表示される
ものの再生ボタン等がディスエーブルになってしまって再生できません
WebPreferencesのarePlugInsEnabledはYESを返してくるのですが
他に何か設定を変えなければならないんでしょうか?

167 名前:163 mailto:sage [2009/06/01(月) 16:25:01 ID:I59S1qHp0]
>>164
確かに狭義の Cocoa スレってわけにはいかないですね。
すっかり忘れていましたが昔 ProcessSerialNumber のためだけに Carbon フレームワークを追加したことがありました。

>>165
これはすばらしいですね。NSCoding などにも準拠していて Core Data にもすぐ使えて便利そうです。
即座にプロパティを NSAlias に変更しました。
ありがとうございました。
((BOOL)setPath: は (void)setPath: じゃなきゃ KVC (?)に対応じゃないよとランタイム(?)から NSLog が出たりしましたがそこは書き換えればすみました)

168 名前:名称未設定 mailto:sage [2009/06/01(月) 20:36:17 ID:z40AA1IZ0]
>>167
165です。
NDAliasを書き換える必要はないでしょう。
たとえば、
- (NSString *)path
{
[self willAccessValueForKey:@"path"];
return [[self alias] path];
[self didAccessValueForKey:@"path"];
}

- (void)setPath:(NSString *)newPath
{
[self willChangeValueForKey:@"path"];
[self setAlias:[NDAlias aliasWithPath:newPath]];
[self didChangeValueForKey:@"path"];
[qtmovie release];
qtmovie = nil;
imageVersion++;
}
とすれば良いのです。Pathを短時間に大量に、あるいは何度も変更しない限りperformanceに
悪影響はないと思います。

他のアプリでの変更を反映させるには、適当なNotification(NSApplicationDidBecomeActiveNotification,
NSWindowDidBecomeMainNotification etc)を受けて、path valueにアクセスすれば良いでしょう。
[object path], [objects valueForKey:@"path"]



169 名前:163 mailto:sage [2009/06/01(月) 22:49:24 ID:mB7SOtSF0]
>>168
なるほど NSManagedObject のサブクラスを作って (void)な setPath: などを実装すればいいのですね。
今は NSManagedObject の value に気楽に NDAlias を放り込んでおりました。
みなさんは逆に気楽に NSManagedObject のサブクラスを作ってらっしゃるんですね。

# というかなんで quicktime movie ってバレてるんですかwwwww

確かに Preview.app はアクティブになったときにファイル名の変更に気づいているので
その nonitifcation で処理しているんでしょうね。ありがとうございました。

170 名前:名称未設定 mailto:sage [2009/06/01(月) 23:22:29 ID:3BCoBALr0]
>>167
クラス名をNSAliasにしちゃダメでしょ
一般的には接頭語にNSは使わない方が良いだろうし、実は_NSAliasっていうプライベートクラスが既にあるし



171 名前:名称未設定 mailto:sage [2009/06/01(月) 23:23:35 ID:ibtFloOf0]
>>170
いや、NDAlias というつかいよいクラスがあるんですよ

172 名前:名称未設定 mailto:sage [2009/06/01(月) 23:29:27 ID:3BCoBALr0]
>>171
だからクラス名はNDAliasのままで、NSAliasにしちゃダメでしょってこと

と思ったけど、>>167良く見るとクラス名じゃなくてプロパティの名前かーじゃあ別にいいか

173 名前:163 mailto:sage [2009/06/01(月) 23:35:38 ID:mB7SOtSF0]
>>170
書き間違えました。手がNEXTSTEPになれきってしまっているようで^^;汗
プロパティの一つにクラス NDAlias を使ったということです。
プロパティの名前は alias です。
インスタンス名やプロパティの名前は小文字で始めるのが NeXT からの習わしですよね

174 名前:名称未設定 mailto:sage [2009/06/01(月) 23:40:24 ID:3BCoBALr0]
>>173
誤字でしたか、スマソ

175 名前:名称未設定 mailto:sage [2009/06/02(火) 21:37:22 ID:oUUbzT8a0]
>>169
168です。
managedObjectのsubclassを作らないのなら、KVC, KVO コンプライアントなアクセッサを
NDAliasのカテゴリーで追加すれば良いです。
例えば、hoge, setHogeを実装すればkeyPath @"alias.hoge"でアクセスできます。
もちろん、コンフリクトしないネーミングが重要です。

NDAliasのコードを改変するのは、下策でしょう。

># というかなんで quicktime movie ってバレてるんですかwwwww
テストプロジェクトのコードをコピペしただけです。
偶然の一致とはいえ、面白いものですね。
私は千里眼ではないので、、(笑)

バグがあったので訂正します。
- (NSString *)path{
[self willAccessValueForKey:@"path"];
NSString *value = [[self alias] path];
[self didAccessValueForKey:@"path"];

return value;
}


176 名前:163 mailto:sage [2009/06/04(木) 11:45:21 ID:STpJekAS0]
>>175
お恥ずかしい限りですが、目から鱗でした!
NDAlias 自体に手を付けずに category で追加できるのが Objective-C の真骨頂でしたね。
知識として category という概念があるというぐらいではなく、
このように使いこなしていきたいと思った次第です。

そこで早速categoryを作ってアクセサを追加してみたところ、見事に警告なく動作致しました。
ありがとうございました。

今回のこの警告でそれ以外に勉強になったことをチラシの裏に書いてみますと、
category で追加前は、alias.path を editable ではない TextField にバインディングしており、
コードでは setPath: しているところはないにも関わらず、
setPath: についての警告がバインディングから(ランタイムのとこかから?)
コンソールに出力されるということでした。
バインディングした時点で、editable に関わらず、
KVO に準拠しているかどうかが(ランタイムに?)チェックされるのですね。

177 名前:名称未設定 mailto:sage [2009/06/04(木) 16:13:44 ID:FN7ww8Hm0]
純正アプリ(例えばiTunes)のLocalizable.stringは
"137.006" = "ダウンロード中 (^1 / ^2)";
というように表記されていますが、
^1 これはどのようにコードから呼び出せばいいのでしょうか?
%@ならstringWithFormat:を使えばいいのですが。

178 名前:名称未設定 mailto:sage [2009/06/04(木) 16:25:17 ID:STpJekAS0]
NSMutableString の replaceOccurrencesOfString:withString:options:range: を使えばよいような気がします。
%@ はむしろ危険な香りがします。なんとなく。

179 名前:名称未設定 mailto:sage [2009/06/04(木) 17:21:08 ID:X5X6UBZT0]
%@の話はもうたくさん

180 名前:名称未設定 mailto:sage [2009/06/04(木) 18:08:38 ID:FN7ww8Hm0]
>>178




181 名前:名称未設定 mailto:sage [2009/06/04(木) 18:36:00 ID:FN7ww8Hm0]
>>178
コードで検証してみました。
NSMutableString *mString = [NSMutableString stringWithstring:NSLocalizedString(@"137.006", nil)];
[mString replaceOccurrencesOfString:@"^1" withString:@"hoge" options:0 range:NSMakeRange(0, [mString length])];
[mString replaceOccurrencesOfString:@"^2" withString:@"huga" options:0 range:NSMakeRange(0, [mString length])];

これでうまくいったのですが、ちょっとローカライズ文字列を取り出すのにこれは面倒ですね、、。
純正アプリもこのようにしているのでしょうか。
このようにNSMutableStringと^1を用いてローカライズ文字列を取り出す場合の利点はどういった所でしょうか?

182 名前:名称未設定 mailto:sage [2009/06/04(木) 18:59:47 ID:CEgw24940]
iTunesはCarbonアプリだよ。
その^1とかいうのも、旧Mac OS時代のテキストリソースの書式。

183 名前:名称未設定 mailto:sage [2009/06/04(木) 19:47:39 ID:7RDrGgVy0]
>>181
ParamText()っていう古いAPIの手法だよ。^nがn番目の引数に置き換わる。
当然そんな面倒臭い呼び出し方はせず、wrapper作って1 stepで呼び出してるはず。
%@方式に比べて順番が指定できるから、日本語と英語みたいに逆順表現になる場合は有効
"%@ %@"だと引数入れ替える必要あるけど、^n方式だと"^1 ^2"を"^2 ^1"にすればOK

184 名前:名称未設定 mailto:sage [2009/06/04(木) 20:14:49 ID:CEgw24940]
Formatted Stringでも順番指定は出来るでしょ。
%1$@, %2$@, ...のように。

185 名前:名称未設定 mailto:sage [2009/06/04(木) 20:51:59 ID:oneyXL090]
何と、そんな書式があったとは

186 名前:177 mailto:sage [2009/06/04(木) 21:12:11 ID:+hNFS8n90]
>>182 >>183
なるほど!謎が解けました。CarbonのAPIを利用していたとは考えつきませんでした。
ありがとうございます。

187 名前:名称未設定 mailto:sage [2009/06/04(木) 21:24:06 ID:CEgw24940]
>>184に加えて念のため書いておくと、「%@」に限った話ではない。printfの書式知ってる人には当たり前だけど。
developer.apple.com/documentation/Cocoa/Conceptual/Strings/Articles/formatSpecifiers.html

188 名前:名称未設定 mailto:sage [2009/06/04(木) 21:58:26 ID:AlxKaiKB0]
>>176
168です。動作おめでとうございます。
サブクラスでなくカテゴリを使うとコードやIBでの変更が少なくてすみます。
私も
Using Tree Controllers With NSXML Objects
developer.apple.com/documentation/Cocoa/Conceptual/NSXML_Concepts/Articles/UsingTreeControllers.html
を読んだときは感動しました。

後半のtextFieldの件はconditionally sets editableがオンになっていたのではないでしょうか?

161で書かれている機能はdocument based applicationでは、かなり前から実装されています。
cocoaで、document baseではないapplicationでもこういった機能が使えるようなAPIが公開されることを
願っています。


189 名前:163 mailto:sage [2009/06/06(土) 15:23:22 ID:8Hv1u8j90]
なるほどこのような XML に関するいいドキュメントを教えて頂きありがとうございます。
Apple 自ら NS* なクラスを拡張する記事を書いてくるとは勉強になりますね。
Apple だから NS* なクラスそのものにメソッドを追加する仕様変更もできるのに
デベロッパ側でも自由にできる柔軟な言語であることを公式記事として紹介する姿勢がまたよいなあと思いました。

conditionally sets editabe はオフのままでした。
(試しに alias.path に戻して試してみました)
やはり binding した時点で KVO 準拠かどうかはランタイムか誰かがチェックするようになっているんですかねえ。

document-based application では実装されているとは知りませんでした。
(まだ document-based なのは一度も使ったことないのですあせあせ)
ならば将来は Cocoa でそういう API が公開されるかもしれませんね。


190 名前:名称未設定 mailto:sage [2009/06/07(日) 20:51:32 ID:wcoqoclb0]
>>189
188です。
release noteとか、sample code、ヘッダファイルのコメントに有用な情報があることもあります。
GuideやOverViewとかの解説記事は更新が結構遅れることがあります。

textFieldの件、実験しました。
read only bindingの場合、-set<Key>:が無くても警告が出ませんが、KVCコンプライアントでない-set<Key>:
があると警告が出るようですね。
一つ勉強になりました。




191 名前:名称未設定 mailto:sage [2009/06/08(月) 00:33:41 ID:cWdbvugm0]
オブジェクトを動的に判別する
カッコイイサンプルコードを教えてください

192 名前:名称未設定 mailto:sage [2009/06/08(月) 01:08:36 ID:DQN4aVj/0]
>>191
[obj class]
[obj isKindOfClass: ]
ぐらいつかっておけ

193 名前:名称未設定 mailto:sage [2009/06/08(月) 01:26:55 ID:cAuoxGAE0]
>>192
isMemberOfClass:もねDQNさん

194 名前:名称未設定 mailto:sage [2009/06/08(月) 06:08:21 ID:JFdwuF9a0]
>>193
クラスを判別したいとは書かれてないのになんでそうなるの?牛野郎




おれのIDは何になるか・・ドキドキだぜ!

195 名前:名称未設定 mailto:sage [2009/06/08(月) 09:52:34 ID:hb99arLO0]
>>192
DQNwww

196 名前:名称未設定 mailto:sage [2009/06/08(月) 11:52:32 ID:DQN4aVj/0]
>>195
どうも、ご愛顧いただいております DQN です

197 名前:名称未設定 mailto:sage [2009/06/09(火) 12:00:17 ID:/N8YFhoo0]
アプリケーションの起動時に、あるクラスのインスタンスをNSNotificationSenterに登録しようと思っています。

+ (void)load {
[[NSNotificationCenter defaultCenter]
addObserver:[[[self alloc] init] autorelease]
selector:@selector(hoge:)
name:@"fuga"
object:nil];
}

このようにするのは安全ですか?
+load の中で そのクラスの -init を呼んでも大丈夫なのでしょうか。

198 名前:名称未設定 mailto:sage [2009/06/09(火) 13:17:03 ID:SaDTu/q00]
www.mikeash.com/?page=pyblog/friday-qa-2009-05-22-objective-c-class-loading-and-initialization.html
によると、+load は早すぎ。
+initialize はそのクラスの他のメソッドを呼ぶ寸前にならないと呼ばれないので
Notification を登録するには遅いかも。

というわけで僕の技量ではわかりません(;_;)
ぼくなら諦めてメインの awakeFromNib から登録します...
なにかいい方法わかったら教えてください

199 名前:名称未設定 mailto:sage [2009/06/09(火) 13:32:33 ID:HGRM8OPL0]
NSApplicationのdelegateメソッド
- (void)applicationDidFinishLaunching:(NSNotification *)aNotification

あるクラスがいつロードされるのか
NSApplicationのdelegateがあるクラスを知ってるのか
は知らんけど、大体ここで。

200 名前:197 mailto:sage [2009/06/09(火) 15:48:46 ID:EeY5aCI70]
>>198-199
ありがとうございます。
- (void)applicationDidFinishLaunching:(NSNotification *)aNotification
を使う事にします。

-awakeFromNib を使うにせよ、どこかのメソッドで一括して登録するしかなさそうですね。
上記の +load を持つクラスを継承してXXXOberver, YYYObeserver, ... を作れば、
それらを個別に登録する手間が省けるかと思ったのですが。



201 名前:名称未設定 mailto:sage [2009/06/09(火) 15:54:10 ID:r/0i+jR00]
イニシャライザではダメなの?

202 名前:名称未設定 mailto:sage [2009/06/09(火) 16:05:22 ID:HGRM8OPL0]
要望は「アプリケーションの起動時に」ですから。

203 名前:名称未設定 mailto:sage [2009/06/09(火) 16:23:48 ID:03wOq/G50]
インスタンスを登録するんだから、インスタンスの初期化時で良いんじゃない?
そもそも起動直後にインスタンスが存在してる保証があるのかも分からんし。

204 名前:名称未設定 mailto:sage [2009/06/09(火) 16:38:54 ID:IaPDkHQu0]
>>200
NSValueTransformerを登録するのに+loadを使っています。
同じ手法が適応できるかですね。
197の場合、NSNotificationCenterのsingletonが作られるのでしょうか?
一度実験してみたらよいのでは?
ただ、+loadでautoreleaseを使うのならNSAutoreleasePoolのインスタンスが必要です。


205 名前:名称未設定 mailto:sage [2009/06/09(火) 16:58:49 ID:HGRM8OPL0]
対象オブジェクトをnilにしてるってことはあるNotificationをすべて受けたいってことでしょ?
そういう場合は起動時にオブザーバーの作成とNotificationCenterへの登録を同時にしたいってのは普通の要望でしょう。
って、ことだろうなって思ったんだけど。

206 名前:197 mailto:sage [2009/06/09(火) 17:18:37 ID:EeY5aCI70]
>>201, >>203
必要なインスタンスはobserverに登録するもの1つだけなので、
初期化時に登録するというのは本末転倒な気がします。

>>204
>197の場合、NSNotificationCenterのsingletonが作られるのでしょうか?
+load が呼ばれるのは依存しているフレームワークのクラスすべての +load が呼ばれた後、とのことなので、
おそらくsingletonは正常に作られると思います。後ほど実験してみます。

>+loadでautoreleaseを使うのならNSAutoreleasePoolのインスタンスが必要です。
なるほど、 +load の時点ではプールは存在しないのですね。
登録したインスタンスはアプリケーション終了時まで削除しないので、
autoreleaseは使わない事にします。

207 名前:名称未設定 mailto:sage [2009/06/09(火) 17:23:06 ID:03wOq/G50]
やろうとしてる事のメリットが全く分からないんだけど。
なぜinitで登録するのがダメなのか教えて欲しい。

208 名前:名称未設定 mailto:sage [2009/06/09(火) 17:25:58 ID:03wOq/G50]
>>206
>必要なインスタンスはobserverに登録するもの1つだけなので、
>初期化時に登録するというのは本末転倒な気がします。

要するに複数のインスタンスは作りたいけど、Notificationに対する動作は1回にしたい、という事か。
それだと設計に問題があると思うが。
コントローラーを1つ作って、それに処理させるのが普通じゃね?

209 名前:名称未設定 mailto:sage [2009/06/09(火) 17:52:44 ID:rt8PJHXF0]
>>200
>> 上記の +load を持つクラスを継承してXXXOberver, YYYObeserver, ... を作れば、
>>それらを個別に登録する手間が省けるかと思ったのですが。
こういうのは後で見たときにオブザーバが起動時に登録されてることが隠蔽されちゃって
わからなくなるからちゃんと明示的に登録した方がいいと思うよ。
それと再利用について問題が発生しないならシングルトンクラスはなるべくサブクラス
せずに一つですませるのがいいと思う。
ぼくならいわゆるApplication Controller クラスで全部やっちゃうな。

210 名前:197 mailto:sage [2009/06/09(火) 17:53:00 ID:EeY5aCI70]
>>207-208
他の手法がダメというわけではありません。
+ (void)addObservers {
[center addObserver:[[XXXObserver alloc] init] ...];
[center addObserver:[[YYYObserver alloc] init] ...];
[center addObserver:[[ZZZObserver alloc] init] ...];
}
などのメソッドを作り一括で登録してもよいのですが、
このような***Observerクラスの実装を頻繁に追加するつもりだったので、
その度に+addObserversを書き換えたり、登録に漏れがないかチェックしたりする労を避けたかったのです。





211 名前:197 mailto:sage [2009/06/09(火) 18:01:59 ID:EeY5aCI70]
>>209
>こういうのは後で見たときにオブザーバが起動時に登録されてることが隠蔽されちゃって
>わからなくなるからちゃんと明示的に登録した方がいいと思うよ。
グループ名やファイル名、クラス名を工夫して分かりやすくしようと思っていましたが、
確かにトリッキーなことをしていると後々分からなくなりそうですね。

212 名前:名称未設定 mailto:sage [2009/06/09(火) 18:28:39 ID:03wOq/G50]
>>210
そうじゃなくてXXXObserverとかYYYObserverのinitの中でNotificationの登録をすればいいじゃん、て話。

213 名前:197 mailto:sage [2009/06/09(火) 18:36:57 ID:/N8YFhoo0]
連投失礼します。簡単に実験してみたところ、正常に動作しているようでした。
少なくとも、+ loadの中で自分自身やCocoaクラスのインスタンスを作成することは問題ないようです。

設計方針には誤りがあるようなので、再検討してみます。ご指摘ありがとうございました。

214 名前:197 mailto:sage [2009/06/09(火) 18:48:18 ID:/N8YFhoo0]
>>212
語弊があったかもしれませんが、observerとして登録するインスタンス以外に、
XXXObserverのインスタンスを作ったり参照したりすることはありません。

もしinitの中で登録するのであれば
+ (void)addObservers {
[[XXXObserver alloc] init]; // initの中でNotificationの登録
}
こんな書き方になるでしょうが、>>210と本質的な違いがあるとは思えません。

215 名前:名称未設定 mailto:sage [2009/06/09(火) 20:24:27 ID:WjMp2AGZ0]
つまり、XXXObserverみたいのがたくさんあって、追加変更されることもある
だからapplicationDidFinishLaunchingで 手動登録するとミスがでやすい
そこで、XXXObserverクラスが読み込まれたときに自分自身でオブザーバ登録するようにすれば
ファイルをプロジェクトに登録しただけでok で良くなる

ということだよね

216 名前:名称未設定 mailto:sage [2009/06/10(水) 03:00:35 ID:oybbK05z0]
おれも>>212でいいと思うんだけど

217 名前:名称未設定 mailto:sage [2009/06/10(水) 06:15:54 ID:HWaH6z3b0]
見張りたいイベントの種類ごとにオブザーバクラスを作るよりは、アプリケーション全体の
コントローラクラスに通知を処理するコードをまとめた方がいいと思う。
コードを別々のオブザーバクラス達に切り分けるとオブジェクト指向っぽく見えるかもしれないけど、
実際のところ
1) オブザーバオブジェクトの登録は通知の種類ごとに別々に書かなければならず、メソッド継承の
メリットがない。
2) オブザーバクラスはそれ自体が固有のデータなり外部の対象を表しているわけでなく、たんに特定の
処理をまとめているだけなので、別クラスにするオブジェクト指向的な必然性がない。
3) ソースファイルレベルで整理したければ別カテゴリに分けておけばいい。
4) オブザーバクラスの初期化メソッドに登録処理を入れてしまうと後で流れがわかりにくくなる。
という事情があるのであまりオブザーバクラスを作るメリットがないように思う。こういうのはもしSmalltalk
だったらブロック構文で通知処理コードを書いちゃうところじゃないかな。だからメインのコントローラクラスに
いろいろ個別の処理のためのメソッドをいろいろ作るのがそれほどダサイことだとも思わない。

218 名前:名称未設定 mailto:sage [2009/06/10(水) 06:46:31 ID:C43i09fd0]
そもそもコントローラーを正しく設計していれば
Notificationを使う必要性はあまり無いと思うけど。

219 名前:名称未設定 mailto:sage [2009/06/14(日) 21:08:41 ID:XPyIS2i/0]
情報が無くて・・・ご存知でしたら教えてください。

Cocoaプラグインは、64bit化してもアンロードサポートがないまま
なのでしょうか?
CocoaバンドルサポートはCoreFoundationバンドルサポートより
この点で致命的に使いづらいです。

CFPlugin使いづらいよ・・・

220 名前:名称未設定 mailto:sage [2009/06/15(月) 00:38:34 ID:qX+5qPVB0]
>>219
ええっと、Leopard になって NSBundle も unload できるようになったんですが。
32bit でも 64 bit でもですよ。
NSBundle Class Reference 読みましたか?
情報無いって言うまえに本家のドキュメントを読んでください。
developer.apple.com/documentation/Cocoa/Reference/Foundation/Classes/NSBundle_Class/Reference/Reference.html#//apple_ref/occ/instm/NSBundle/unload



221 名前:名称未設定 mailto:sage [2009/06/15(月) 05:42:32 ID:7movYKEj0]
うわぁ・・・ホントですね失礼しました。

Bundle Programming Guideのほうは

You cannot currently unload the contents of an NSBundle object.
You can unload the contents of a CFBundle object using CFBundleUnloadExecutable. If your bundle may be unloaded,
you need to ensure that string constants are handled correctly
by setting an appropriate compiler flag.

って書いてあったので、未だに出来ないものだとばかり・・・


222 名前:名称未設定 mailto:sage [2009/06/15(月) 10:12:39 ID:qX+5qPVB0]
>>221
いえいえ。一般に Apple のドキュメントは、
ヘッダファイル内のコメント , Tech notes
>> Release Notes
>> 各クラスのドキュメント
>> 何とかかんとかガイド
>> 日本語訳
の順に情報が新しいので、下のほうにいくほど情報が古いことがよくあります。

223 名前:名称未設定 mailto:sage [2009/06/15(月) 15:58:12 ID:OLaEf2q/0]
質問です。Appleイベントを拾う場合に、

NSAppleEventManager *aeMgr = [NSAppleEventManager sharedAppleEventManager];
[aeMgr setEventHandler : self
andSelector : @selector(handleGetURLEvent:withReplyEvent:)
forEventClass : kInternetEventClass
andEventID : kAEGetURL];

と例があるのですが、kInternetEventClassとkAEGetURLはcarbonの定数?みたいなのですが、
これは将来使えなくなるのでしょうか?

よろしくお願いします。



224 名前:名称未設定 mailto:sage [2009/06/15(月) 16:34:01 ID:Y372xsMm0]
kInternetEventClass、kAEGetURLという名前が変わることがあっても、
実体は変わらないはずです。

無くなるのはAppleEvent自体がなくなるときだと思うよ
無くなるのだとしても十分な期間を置くでしょ

225 名前:名称未設定 mailto:sage [2009/06/15(月) 23:37:14 ID:qX+5qPVB0]
>>223
別に Carbon が全部使えなくなるわけではないです。
Leopard が出る際に公表された今後の方針は、
64bit ソフトでは Carbon の GUI まわり (HIToolBox とか) は
使えませんというだけで、GUI より下のレベルの
OS の基本にかかわってくるのは大丈夫なはずです。
というかドキュメントを読むと、64bit で使える、使えない、
と書いてるので自分で確かめられます。

226 名前:名称未設定 mailto:sage [2009/06/16(火) 00:16:09 ID:AQ67C4GH0]
AppleEventなくなったら何もできなくなるじゃん
代替のものが登場してさらにそれが十分に浸透しない限りAEはなくならない

227 名前:名称未設定 mailto:sage [2009/06/16(火) 00:18:34 ID:NJ+CxxYH0]
もしかしたら基本的な質問かもしれませんが、
10.5で追加されたクラスを使いつつ10.4に対応させるにはどうしたら良いでしょうか?
10.5上で動作している場合は10.5で追加されたクラスを使い、
10.4上の場合は別のやり方で回避する、ということをしたいのですが、
10.5SDKを使っていると10.4で動かすことはできませんよね?
メソッドならperformSelectorとかを使えばなんとかなりますが
クラスの場合はどうすれば良いでしょうか?
ビルド設定とかでなんとかなるもんなんですか?

228 名前:名称未設定 mailto:sage [2009/06/16(火) 00:25:18 ID:AQ67C4GH0]
一番手っ取り早いのはNSClassFromString

229 名前:名称未設定 mailto:sage [2009/06/16(火) 05:57:09 ID:idbUOSgX0]
10.4と10.5に分けてリリースするのが普通だと思うが

230 名前:227 mailto:sage [2009/06/16(火) 10:01:44 ID:NJ+CxxYH0]
>>229
まあ本当はそうすべきなんでしょうが、10.5の新機能をがんがん使っているというわけでもないもので
できればシームレスに統合したいと思っています。

>>228
ありがとうございます。
NSClassFromStringとNSInvocationでなんとかしました



231 名前:名称未設定 mailto:sage [2009/06/16(火) 10:13:12 ID:g72K1aOw0]
>>230
Leopard専用のフレームワークにリンクしてる時点でTigerでは起動できないんじゃない?

232 名前:名称未設定 mailto:sage [2009/06/16(火) 10:34:18 ID:NJ+CxxYH0]
>>231
>Leopard専用のフレームワークにリンクしてる時点でTigerでは起動できないんじゃない?
Cocoaに新たに追加されたものを使っているだけで
新しいフレームワークを使っているわけではないです
それだったら10.4は切ります

233 名前:名称未設定 mailto:sage [2009/06/16(火) 11:04:43 ID:2ORR5FIV0]
weak linkとかそういう次元の話?
Cocoaでどうやるのかはシラネ。

234 名前:名称未設定 mailto:sage [2009/06/16(火) 11:12:19 ID:AQ67C4GH0]
>>233
普通に/System/Library/Frameworks/Cocoa.framework/Versions/A/Cocoaにリンクしとけばいいだけっしょ

235 名前:名称未設定 mailto:sage [2009/06/16(火) 12:02:37 ID:u5W3blRU0]
>>229
そんなのが普通だなんて言う人はじめてみた
iWork 09なんか明らかにCore Animation使ってるけど10.4から対応してるよね
ダイナミックに内部で切り分けられてユーザに選ばせることすらさせなくていいのがObjective-Cじゃないの

236 名前:名称未設定 mailto:sage [2009/06/16(火) 12:47:02 ID:g72K1aOw0]
>>235
10.3と10.4を別々にリリースというのは見かけるけどね

237 名前:名称未設定 mailto:sage [2009/06/16(火) 13:20:34 ID:1Z4L+RJ80]
ちなみにiWork09みたいにフレームワークのリンクをOSによって動的にしわけるのはどうするんだろう

238 名前:名称未設定 mailto:sage [2009/06/17(水) 00:28:42 ID:Qs4wlMQ20]
developer.apple.com/technotes/tn2002/tn2064.html
かな?情報がちと古いが...
developer.apple.com/documentation/DeveloperTools/Conceptual/cross_development/Introduction/CrossDevelopment.html
これとか?

239 名前:名称未設定 mailto:sage [2009/06/17(水) 01:20:53 ID:YfGS704U0]
オレはこれを良く使うけど。
floor( NSAppKitVersionNumber ) <= NSAppKitVersionNumberxx_x

developer.apple.com/releasenotes/Cocoa/AppKit.html

240 名前:名称未設定 mailto:sage [2009/06/17(水) 10:38:58 ID:mPj8SVVR0]
NSObjectにperformSelector:onThread:withObject:waitUntilDone:ってあるけど
main threadからsub threadに対して実行したい場合、どうやったらmain threadは
sub threadのobjectを得ることが出来るの?



241 名前:名称未設定 mailto:sage [2009/06/17(水) 11:39:00 ID:hjtBqrkM0]
それを投げるってことはNSThreadオブジェクトがあることを知っているはず。
知ってるならそれを作った人を知ってるはず。(同じ人かも)
作った人はNSThreadのオブジェクトを保持することが可能なはず。


242 名前:名称未設定 mailto:sage [2009/06/17(水) 13:07:22 ID:mPj8SVVR0]
NSThreadでは生成したスレッドのオブジェクトを返さないから投げる先が
わからんということなんだが。

243 名前:名称未設定 mailto:sage [2009/06/17(水) 13:19:39 ID:lUCcTzPg0]
メインスレッドで使っているインスタンス変数を、そのままサブスレッドでも使えますよ
スレッドセーフになるように気をつけるひつようはありますが

244 名前:名称未設定 mailto:sage [2009/06/17(水) 15:31:09 ID:f6VhEUD60]
>>242
initかinitWithTarget:selector:object:すれば
NSThreadオブジェクトもらえますが?

245 名前:名称未設定 mailto:sage [2009/06/17(水) 17:56:11 ID:xB/8umtP0]
アップルスクリプトからの、NSAppleEventDescriptor*型の返り値を変数resultに入れ、
以下のように数値として利用しています。
result = [script executeAndReturnError: &error];
resultString = [result stringValue];
[resultString intValue](〜以下略)
なんだかとてもまどろっこしいやり方に自分で思えるのですが、もっとスマートな方法はあるでしょうか?


246 名前:245 mailto:sage [2009/06/17(水) 18:09:33 ID:xB/8umtP0]
>>245
書き忘れました。resultStringはNSString* です。

[resultString initWithString:[result stringValue]];
を試してもだめだったのですが、初心者なもので上記のコードと何が違うのかがよくわかりません。
併せて説明してもらえたらうれしいです。

247 名前:名称未設定 mailto:sage [2009/06/17(水) 18:23:15 ID:hDwFLfNR0]
int val = [[result stringValue] intValue];



248 名前:名称未設定 mailto:sage [2009/06/17(水) 18:28:13 ID:hjtBqrkM0]
-[NSAppleEventDescriptor int32Value]

249 名前:245 mailto:sage [2009/06/17(水) 19:26:57 ID:xB/8umtP0]
>>247,248
ありがとう。
int val = [[result stringValue] intValue];  でうまくできました。
[NSAppleEventDescriptor int32Value]  だとwarningが出るのですが、自分で調べてみます。

250 名前:名称未設定 mailto:sage [2009/06/17(水) 20:12:47 ID:Jk9H1Q7a0]
ん?int, longなら、[result intValue], [result inttegerValue] でええがな。
NSStringリファレンスを見てみ。Getting Numeric Values って項目があるっしょ。



251 名前:名称未設定 mailto:sage [2009/06/17(水) 20:14:32 ID:Jk9H1Q7a0]
うわっ…ごめん、さっきのは無しにして下さい。勘違いしてた。

252 名前:名称未設定 mailto:sage [2009/06/18(木) 00:52:27 ID:Nv8LVQiH0]
コマンドラインツール内でCocoaを使用していて、エラー出力にNSErrorを用いています。
通常のCocoaアプリケーションをローカライズしている場合、NSErrorの
-(NSString *)localizedDescription;でローカライズされたエラー内容が得られるのですが、
これをコマンドラインツールで行うにはどうしたら良いでしょうか?
nibやLocalizable.stringと違ってコマンドラインのバイナリ自体はXcodeからローカライズできないようです。
ツールの使用はターミナル上でなくて、NSTaskでの使用を想定しています。
ご教示よろしくお願いします。

253 名前:名称未設定 mailto:sage [2009/06/18(木) 01:39:15 ID:WIz2V6ow0]
Info.plistをexecutableに組み込む話はどっかで読んだけど、Resourceも行けるのか?

254 名前:名称未設定 mailto:sage [2009/06/18(木) 02:04:10 ID:WIz2V6ow0]
やはり -sectcreate は、info.plistだけのようだ。

Putting Info.plist Files in a Flat Executable
developer.apple.com/iphone/library/documentation/MacOSX/Conceptual/BPRuntimeConfig/Articles/ConfigFiles.html#//apple_ref/doc/uid/20002091-102276


255 名前:名称未設定 mailto:sage [2009/06/18(木) 03:14:13 ID:h+s7ZAu10]
で、CFBundleAllowMixedLocalizations キーかな?

256 名前:名称未設定 mailto:sage [2009/06/18(木) 04:11:19 ID:Nv8LVQiH0]
うーん、どうもうまくいかないので今日は諦めてまた後で試してみます。すみません。

257 名前:名称未設定 mailto:sage [2009/06/18(木) 05:22:21 ID:U3qjTDYa0]
リファレンスを見てみるとNSErrorのlocalizedDescriptionメソッドはエラーオブジェクト
作成時に渡されたuserInfoディクショナリのNSLocalizedDescriptionKeyキーに
対応する値を返すだけみたいだけど、これは言語ローカライズとはあまり関係ないんじゃない?
Xcodeで操作するローカリゼーションに対応する方は、もしコマンドラインアプリケーションで
再現したければNSBundle/CFBundleを自前でさわる必要があると思う。

258 名前:名称未設定 mailto:sage [2009/06/21(日) 21:33:39 ID:r57JJ9oM0]
Finder上でファイルやディレクトリをコピーした時の、
半透明状態で触れないっていう状態をプログラムからも作り出せますか?

259 名前:名称未設定 mailto:sage [2009/06/21(日) 21:41:50 ID:r57JJ9oM0]
補足
ファイルをコピーしたいわけではなく、半透明ロック状態を作り出せるのかという質問です。

260 名前:名称未設定 mailto:sage [2009/06/21(日) 22:21:03 ID:dgweUrN20]
>>258
Safariでさえダウンロード途中は.downloadで凌いでるからなぁ。
間違って開かれたら自プログラム側で警告する以外ないんじゃない?



261 名前:名称未設定 mailto:sage [2009/06/21(日) 23:40:53 ID:r57JJ9oM0]
>>260
.downloadはパッケージになっていて、中にダウンロード中のものを格納しているみたいですね。
パッケージだとユーザに触って欲しくない時でも開けちゃうんですけどまぁ仕方ないですかねー。
Finderのあれはハードリンクか何かでうまいことやってるのかなーと思って調べてたんですけど結局分からずじまいで、
Carbon触らないと無理な匂いがしたのでいったん諦めておきます。ありがとうございました。

262 名前:名称未設定 mailto:sage [2009/06/22(月) 06:14:52 ID:KJHOdHBS0]
処理中はユーザに触らせたくないなら"."から始まる不可視フォルダに詰めて
処理終了時にリネームあるいは移動して結果を見せれば良い。
不可視フォルダはSpotlightも無視するので、mdsが途中触って邪魔することを
防ぐ効果もある。これはSpotlight登場後の処理方法の定石

263 名前:名称未設定 mailto:sage [2009/06/22(月) 06:35:27 ID:JSXuGMiDI]
.noindexつけないとSpotlight動くだろ

264 名前:名称未設定 mailto:sage [2009/06/22(月) 07:10:51 ID:KJHOdHBS0]
>>263
Technical Q&A QA1497
FSDeleteObject fails with fBsyErr, sometimes
developer.apple.com/qa/qa2006/qa1497.html

265 名前:名称未設定 mailto:sage [2009/06/22(月) 07:36:21 ID:F9qIMO/W0]
ユーザに触らせたくないけど中身がどのように変化していってるかは見せたい。
という妙な事をしたかったので不可視フォルダは考えてませんでした。
Finderのフォルダコピーの挙動ならファイルサイズの変化が見える。
Safariのダウンロードパッケージ式だとファイルサイズの変化も見える上、中身のファイル構造も見せれる、でもファイルに触れちゃう。
ということでFinderの挙動を真似したかったのですが、上記にも書いた通り深そうなところを触らないといけない気がするので
結局ディレクトリを作ってロックかけて処理が終わったらロック解除みたいな感じにしました。
>>264
この情報もおもしろそうなので読ませていただきます。ありがとうございます。

266 名前:名称未設定 mailto:sage [2009/06/22(月) 16:51:22 ID:POdpYeKu0]
>>265
ファインダーはあれはファイルシステムに特殊なことをやっているのが
表示されているというよりは、ファインダー自身がコピー中だというのを
知っているので単にあのように表示しているだけなんじゃないかと
勝手に思っていますが、どうなんでしょうね?


267 名前:名称未設定 mailto:sage [2009/06/22(月) 19:59:08 ID:9D40e7Ew0]
>>265
フォルダっぽく見えるけど実はフォルダではないファイル作っとけばいいんじゃね?
自分のアプリに関連付けしとけば、開こうとしたときに警告も出せる。

268 名前:名称未設定 mailto:sage [2009/06/23(火) 06:42:50 ID:Tqmm0C0F0]
Finder.hを見れば解るが、ダウンロード進行をアイコン変化で示す様な物を
作りたい場合は、kFirstMagicBusyFiletypeからkLastMagicBusyFiletypeの
ファイルタイプを使ってアイコンを割り当てておけば良い。
これらのファイルを触ろうとするとFinderは警告を出す。
iCabはこの実装を使っているので参考になる。

269 名前:名称未設定 mailto:sage [2009/06/23(火) 09:06:39 ID:lQB3WwPC0]
>>268
おお、なるほど

270 名前:名称未設定 mailto:sage [2009/06/23(火) 16:33:50 ID:BhDLKHlk0]
新しい Interface Builder の Library は下の絞り込みサーチボックスに入力したら
絞り込み結果が Core Animation らしき動きをしますが、
こういうビューは自作するしかないのでしょうか。
例えば通常の NSTableView で行を絞り込むときにこのようなエフェクトをかけるというのは
どこから手を付けたらいいのでしょうか。



271 名前:名称未設定 mailto:sage [2009/06/23(火) 23:03:44 ID:kA+F9T830]
NSCollectionView

272 名前:名称未設定 mailto:sage [2009/06/24(水) 01:03:21 ID:dCQzw8zo0]
>>268
まだ試していませんが、非情に有益な情報ありがとうございます。

273 名前:名称未設定 mailto:sage [2009/06/24(水) 13:18:06 ID:VQSLQrnn0]
>非情に有益
......

274 名前:名称未設定 mailto:sage [2009/06/24(水) 13:21:46 ID:TQGvf9Hx0]
ああ、無情・・・

275 名前:名称未設定 mailto:sage [2009/06/24(水) 13:48:53 ID:0enaCFFq0]
まあまあ。

276 名前:名称未設定 mailto:sage [2009/06/24(水) 16:31:20 ID:QicBPAPV0]
北斗有情断迅拳!

277 名前:名称未設定 mailto:sage [2009/06/24(水) 16:59:03 ID:EWoHgecL0]
>>271
ありがとうございました。できました。

278 名前:名称未設定 mailto:sage [2009/06/29(月) 11:43:10 ID:6XwWsecp0]
NSTextView において,改行コードの場所に改行マークを表示させるにはどうすればよいでしょうか?

279 名前:名称未設定 mailto:sage [2009/06/29(月) 17:19:18 ID:ps9LiOQA0]
>>278
¥u21a9

280 名前:名称未設定 mailto:sage [2009/06/29(月) 20:03:03 ID:kXQ6aG620]
NSLayoutManger のサブクラスをつくって、そこで
- (void)drawGlyphsForGlyphRange:(NSRange)glyphRange atPoint:(NSPoint)containerOrigin
で描く。ググればサンプルコードが出てくるかも




281 名前:名称未設定 mailto:sage [2009/06/30(火) 06:28:32 ID:QWROwNq30]
>>279
改行の記号はU+23CEだお

282 名前:名称未設定 mailto:sage [2009/06/30(火) 11:31:38 ID:00gk40Nv0]
人それぞれやがな...

283 名前:名称未設定 [2009/07/05(日) 14:47:25 ID:ECidSkr40]
NSCollectionViewでアイコン表示の時のFinderみたいなアプリを作りたいんですが
アイコンをダブルクリックしてファイルを開かせる方法が分かりません
俺はいったいどうすればいいんですか

284 名前:名称未設定 mailto:sage [2009/07/05(日) 14:55:39 ID:SpwZwd3J0]
解説を読み漁れ

285 名前:名称未設定 mailto:sage [2009/07/09(木) 09:40:45 ID:DXORXcdZ0]
info.plistのDocument typesの仕様ってLeopardで変わった?
XcodeのSDKを10.4uベースから10.5ベースに変更したら
アプリとファイルの対応がおかしくなった。

286 名前:名称未設定 mailto:sage [2009/07/09(木) 13:31:26 ID:RnNJ1e0N0]
>>285
そんな話は聞かんな。lsregister で Launch Service データベースをリセットしてみたら?

287 名前:名称未設定 mailto:sage [2009/07/09(木) 13:48:43 ID:DXORXcdZ0]
いろいろ調べてたんだが、DocumentControllerの
- (id)makeDocumentWithContentsOfFile:ofType:をオーバーライドして、
docTypeを見てみるとdocTypeではなくてなぜかUTIが渡されてる。
Xcodeは3.1.3。

どうなってるの?

288 名前:名称未設定 mailto:sage [2009/07/09(木) 14:29:19 ID:RnNJ1e0N0]
>>287
developer.apple.com/ReleaseNotes/Cocoa/AppKit.html#UTIs
によると、10.5 SDK からは ofType: には UTI かこれまで通りのか
どっちかが渡ってくるようになったと書いてました。
10.4 SDK 相手にリンクしておくとこれまでどおりらしいです。

289 名前:名称未設定 mailto:sage [2009/07/09(木) 14:37:42 ID:DXORXcdZ0]
>>288
ありがとう。そういうことだったのか・・・docTypeは廃止されるのかもしれないね。

290 名前:名称未設定 mailto:sage [2009/07/10(金) 10:28:47 ID:wX1ZoeE30]
>>283はできるようになったんですが
NSCollectionviewの内容の部分でどうしても右クリックを検知できません
どうすればいいですか



291 名前:名称未設定 mailto:sage [2009/07/10(金) 10:57:57 ID:QdLwS0VW0]
あなたが何を行ったのか我々にはわかりません
-[NSResponder rightMouseDown:]
-[NSView menuForEvent:]
あたりは試しましたか?

292 名前:名称未設定 mailto:sage [2009/07/10(金) 16:34:12 ID:XzqQhCOU0]
>>291
もしよかったら単純化したサンプルコードをうpしたので見て下さい
pulsewidth.web.fc2.com/test/collectiontest2.zip

項目を選択して開いたりするために
NSCollectionViewのサブクラスを作ってそこでmouseDownをオーバーライドしました。
左クリックの方はうまくいったのですが
右クリックの方は項目がない部分でしか反応してくれません。

サンプルで言うと、ABCの部分は右クリックしても
コンソールにrightClickと表示されない(左クリックは表示される)という部分で悩んでいます。
何か助言をいただけるとうれしいです。

293 名前:名称未設定 mailto:sage [2009/07/10(金) 22:26:33 ID:1I/JsT700]
セルになってる部分がNSViewっぽいんだけど、(NSLog(@"%@",[self subviews]); で確認
そいつがrightMouseDown:を遮ってるのが問題なんじゃないかね。

294 名前:名称未設定 mailto:sage [2009/07/10(金) 22:51:39 ID:z5x/LYIv0]
ソース見てないけどアイコン表示してるんだったら右クリックを受けてるのは誰?NSImageViewでしょ。でなければそいつが乗ってるNSView。

295 名前:名称未設定 mailto:sage [2009/07/11(土) 07:12:52 ID:VDOe5QOw0]
>>293,294
ありがとうございます。サブビューをもう1度よく調べたらうまくいきました!

NSViewのサブビューとして同じ大きさのNSBoxを置いて
これの透明度を使って選択状態を表現してたんですがこのNSBoxが遮っていたようです。
このNSBoxのrightMouseDownをオーバーライドすることは試していたんですが反応がなくて諦めてました。
ただ今回もう1度よく調べたらNSBoxは右クリックに対して当たり判定が枠の線だけにものすごくシビアにあるらしく
中身に対しては無反応で遮ってしまうのが分かったので
NSBoxのhitTestをオーバーライドしてクリックを無視させて
NSViewのrightMouseDownをオーバーライドしたらうまくいきました!
NSCollectionViewに原因があるんじゃないかと考えていたんですが
NSBoxの右クリックと左クリックに対する反応の違いが原因だったようです。

296 名前:名称未設定 [2009/07/13(月) 21:28:44 ID:isap/7EM0]
■ おすすめ2ちゃんねる 開発中。。。 by FOX ★
このスレを見ている人はこんなスレも見ています。(ver 0.20)
【UOT-100】24時間ワンセグ野郎 Part03【LOG-J200】 [DTV]
【Cocoa】ミラ・ココア【ジーノ後継?】 [軽自動車]

297 名前:名称未設定 mailto:sage [2009/07/14(火) 02:41:58 ID:omGv8hdqi]
ヒレガス本の3rd editionを注文したんだけど、邦訳されてる最初の版にしか載ってない内容ってありますか?

298 名前:名称未設定 mailto:sage [2009/07/14(火) 12:31:32 ID:wQnDP7aX0]
あるけどまあ気にするな。ヒレガス本ひととおり読み終わったら、
アップルのサイト + ネットの情報で何でも出来るようになります。

299 名前:名称未設定 mailto:sage [2009/07/14(火) 12:46:40 ID:yADLXsqf0]
いや、そうでもないよ

300 名前:名称未設定 mailto:sage [2009/07/14(火) 22:54:17 ID:omGv8hdqi]
Thx
とりあえず3rd edition読んでから考えます



301 名前:名称未設定 mailto:sage [2009/07/15(水) 16:48:22 ID:inB2ofWfi]
NSInteger five = 5;
NSNumber *num = [[NSNumber alloc] initWithInteger:five];
NSLog(@"num:%d", [num retainCount]);

NSNumberのretainCountが初期化直後なのに2になっているはなぜでしょう?
allocしているだけなので、1になると思うのですが。。

302 名前:名称未設定 mailto:sage [2009/07/15(水) 16:55:14 ID:3wnfmNrX0]
>>301
同じ数字のNSNumberインスタンスを大量に生成するのも無駄なので、よく使われるものは同じ数字なら共有インスタンスにするとか
いろいろしているらしい。
自分の管理下で収支が合いさえすればいい。

303 名前:名称未設定 mailto:sage [2009/07/15(水) 17:01:43 ID:3wnfmNrX0]
参考
journal.mycom.co.jp/column/objc/078/index.html

304 名前:名称未設定 mailto:sage [2009/07/15(水) 17:06:29 ID:inB2ofWfi]
>>302-303
有難うございます!

305 名前:名称未設定 mailto:sage [2009/07/15(水) 21:49:02 ID:aC4Xzmmp0]
考え方としてはretainCountがいくつかではなくて、自分が1増やしていたらちゃんと1減らしてやるという原則に従えばいいだけだったりする

306 名前:名称未設定 mailto:sage [2009/07/17(金) 20:49:31 ID:P64/FHL90]
大学でココアをやったけど、社会人になるとあれはなんだったんだ?っていうぐらい接点がなくなってしまった。

いつかはこんなプログラミングの存在すら忘れてしまうのだろうか?
それが悲しい。


307 名前:名称未設定 mailto:sage [2009/07/17(金) 21:35:36 ID:vIJN1zln0]
NeXTの登場以来ずーっとプログラマが増えてきてるよ
最近は特にね
これからもどんどん増えるだろうね

308 名前:名称未設定 mailto:sage [2009/07/17(金) 21:43:34 ID:zlZXLbkbi]
中高でプログラミング教えればいいのに

309 名前:名称未設定 mailto:sage [2009/07/17(金) 22:04:17 ID:/5Tw7bT80]
確かに。今時のサラリーマンは大量の情報を処理する必要があるから、
インタプリタ系の言語Ruby / Python / VBAらあたりが使えると便利だと
思う。

310 名前:名称未設定 mailto:sage [2009/07/17(金) 22:34:07 ID:t5CHQA080]
部活とかでやってるとこは有るけどねぇ
さすがに授業には組み込まないだろw



311 名前:名称未設定 mailto:sage [2009/07/17(金) 22:46:37 ID:q/0NLhsX0]
大学なら最近はJavaとか教えてるっしょ

312 名前:名称未設定 mailto:sage [2009/07/17(金) 22:55:28 ID:50EsSyD+P]
とっくに中高でプログラミングは教えてると思うけど
これってマジレスしちゃだめな流れなの?

313 名前:名称未設定 mailto:sage [2009/07/17(金) 22:57:08 ID:P64/FHL90]
中高でプログラミング教えるぐらいなら数学やったほうがマシ。
意味ねーもん。

314 名前:名称未設定 mailto:sage [2009/07/17(金) 23:08:21 ID:/5Tw7bT80]
>>312
教科書には載ってたけど習わなかったよ。
触りだけで何の役に立つのかも分からん内容だったけど。

315 名前:名称未設定 mailto:sage [2009/07/17(金) 23:16:04 ID:Sn+Kh+7f0]
数学の方が意味ないと思っているのは俺だけじゃないはず。
相変わらず立方根だ方程式だ集合だなんだが
日常生活の何処で役に立っているのか謎。
雑学番組で得意げになれるだけだろあんなもの

316 名前:名称未設定 mailto:sage [2009/07/17(金) 23:17:57 ID:mcniDOox0]
>>313
君にとっては意味が無かったようで残念だね
残念なのは頭の方かも知れないけど

317 名前:名称未設定 mailto:sage [2009/07/17(金) 23:38:52 ID:YZ9+dese0]
>>316
なんでそこまで言うかな。
普通の学生にプログラミングなんて無意味でしょ。

318 名前:名称未設定 mailto:sage [2009/07/17(金) 23:43:53 ID:FDjDpByP0]
現役工房の漏れがきましたよっと

よっぽど熱心な先生だったら情報の授業で教えるだろうけど、情報専門の先生なんて殆んど居なくて数学なり理科なりの先生が片手間で教えてるのが現状だからなぁ……
数学には未だに BASIC の書き方が載ってて、受験にも『あてはまる行番号を書きなさい』とかGOTO書かせる問題が出てる

まぁ数学の先生でBASICなんて今更教えてる酔狂なやつは居ないだろうし、まあ、こんなプログラミングなら教えても全く意味はないな

319 名前:名称未設定 mailto:sage [2009/07/17(金) 23:44:04 ID:zlZXLbkbi]
>>312
やってないよ
くだらんWordの使い方みたいなのはするけどね

>>313
そりゃ正論だけど、要はバランスだと思うのよ

>>315
まさかあなたプログラマじゃぁないよね?w

320 名前:名称未設定 mailto:sage [2009/07/17(金) 23:49:16 ID:P64/FHL90]
>>315
日常生活では確かに必要ないよ。

でもそういう話をしているわけではない。
プログラムなんて必要になったら必要なプログラムを学べばいい。
所詮道具なんだから。






321 名前:名称未設定 mailto:sage [2009/07/18(土) 00:12:01 ID:LojOy0Ya0]
>> 315
日常生活で役に立つことを学んでる訳じゃないんだから、意味ないというのはおかしい。
おまえを取り巻く世界は目に見えて触れられるものだけではないことを知った方がいい。


322 名前:名称未設定 mailto:sage [2009/07/18(土) 00:40:34 ID:MaM78w7y0]
簡単に覚えられるようなら新人教育はもっと楽だろうなあ…はぁ…

323 名前:名称未設定 mailto:sage [2009/07/18(土) 00:51:48 ID:KdpE4OpI0]
>>320,321
それそのまんま数学でも当てはまると思うがおまいらはバカか?
数学だって必要なときだけ学べばいいだろ。
今年もそろそろ、使いもしない数学のせいで補習になる連中が湧いてくるなw

324 名前:名称未設定 mailto:sage [2009/07/18(土) 01:12:02 ID:UlPdeWJ90]
数学は必要な時に学べるものじゃないよ。
一つ一つの積み重ね。
ましてや物理的な現象を数学で定義できるようになるにわね。

325 名前:名称未設定 mailto:sage [2009/07/18(土) 01:23:54 ID:UlPdeWJ90]
あともう一つ言わせてもらうなら、
プログラミングって所詮他人の土俵なんだよね。

ルールは企業が勝手に決められる。
僕はよくエクセル使ってグラフを描くけど、その際に必要なAPIはググればいくらでも出てくる。
ココアでプログラム作成していた時もそうだったけど。

326 名前:名称未設定 mailto:sage [2009/07/18(土) 03:08:16 ID:eaXPUYTF0]
>>319
情報系の授業があるところはやる場合もある。CかVB。


327 名前:名称未設定 mailto:sage [2009/07/18(土) 07:13:44 ID:0ENtd6OP0]
たいていの仕事にパソコンが必須の世の中で、プログラムの触りを学んでおくことは有意義だと思うんだが。
何かを作れるようにではなくて、どのようにして動いているかを知るということで。
エクセルやなんかでぐぐってソースを流用する際にも、それを分けも分からず使うのと、少しでも理解しているのとでは違うと思うし。
応用力っていうか、仕事のできるできないに少なからず結びついて行くと思うんだよなぁ。
プログラマにとってはソフトなんて触ってれば使えるようになるけど、世の中にワードやエクセルの本があれだけ溢れてて、
勉強しないとソフトを使えるようにならない一般職の人を見てると、Cの触りでもやってたら違ったんだろうなと思う。

あと学校での勉強に関して、学生みんなにとってまったく無駄でないことだけを勉強させれるかってそれは無理だし違うよね。
まだ可能性のたくさんある人達にいろんなものに触れさせておくのは大事。中高より専門性の高い大学ですらそう思う。
それに将来直接的に仕事で使うことしか学ばなかったらor学べなかったら視野が狭くなるのでは?そもそも望んだ職につけるかも分からないし選択の幅を広げておくのは学校としては当然のことでしょう。
一見専門外の科目で無駄に思える基礎教養、一般教養も学生の視野と将来性を考えるとやらせておいた方がいい、と社会人になってから気付くと思います。
後半かなり個人的な感想です。朝から長文スマソ。

328 名前:名称未設定 mailto:sage [2009/07/18(土) 07:23:45 ID:0ENtd6OP0]
あれ、、俺後半誰に向かって話してるんだろう。

329 名前:名称未設定 mailto:sage [2009/07/18(土) 08:55:13 ID:WDKPyi4E0]
>> 323
おめでたいな。
必要なときに学ぶんじゃあ、たりないから教育課程に組み込まれてるんだろうが。
お前は行列計算が必要になったら、中一の内容からやるんか?

330 名前:名称未設定 mailto:sage [2009/07/18(土) 13:05:54 ID:IRO7PrC/0]
学校の勉強は必要だから、と云うのと、選択肢を提示するというのの二つの面があるんだからそれでいいじゃまいか

数学嫌いなら学校出てから何もやらなきゃいいだけの話しだし、プログラミングが無駄なら他人が作ったソフトを勝手に使ってればいいだけ

数学にせよプログラミングにせよ、論理的な考え方を身に付けると云う点では良いものだと思うけどな……まぁそれでも論理力を身に付けられなかった人たちがわんさか居るみたいだが……



331 名前:名称未設定 mailto:sage [2009/07/18(土) 14:37:29 ID:Ev3gT3rj0]
スレが伸びてると思ったらコレか。
Cocoaの話しようZE

332 名前:名称未設定 mailto:sage [2009/07/18(土) 14:47:41 ID:KdpE4OpI0]
>>329
それで十分。
プログラミングだって1年やそこらでまともなプログラムが組めると思うなよ。

333 名前:名称未設定 mailto:sage [2009/07/18(土) 20:35:50 ID:NF5M8AGP0]
数少ない機会をみすみす見逃す奴らの多いスレですね。
知識は必要になってから学んでいたんではもう遅いんだよ。
ある機会にそのとき必要な知識を既に持っていなければその機会を活かせるときはそれで終わりなんだよ。

334 名前:名称未設定 mailto:sage [2009/07/18(土) 20:45:51 ID:c/cbzblK0]
まあ若い頃の方が吸収早いしね。記憶するのに何の苦労もない。
いったん吸収して必要ないなら忘れればいい。

335 名前:名称未設定 mailto:sage [2009/07/18(土) 20:46:25 ID:AYKMnLOo0]
どうしてこうプログラムやってる奴はアタマがカタいんだろうね。
どのレスも一理あるがそれだけじゃない場合っていうのがあるのに。

336 名前:名称未設定 mailto:sage [2009/07/18(土) 20:49:38 ID:c/cbzblK0]
>>335
さあ自分の言葉を自分自身に適用する作業に戻るんだ

337 名前:名称未設定 mailto:sage [2009/07/19(日) 13:16:00 ID:6nQyz7kFO]
>>336
つまり、

1 どのレスも一理あるが例外もある
2 >>335もそのレスの一つである
3 従って >>335 は一理あるが例外もある
4 『どのレスも一理あるが例外もある』も一理あるが例外もある
5 ゆえに『一理ないか又は例外がない』レスが存在する

ということか。なるほど。つまり335は一理ないか又は例外がないかのどちらかなんだな。

338 名前:名称未設定 mailto:sage [2009/07/19(日) 15:53:26 ID:LZopbPnM0]
煽られたからってくだらん話で引っ張んなよ

339 名前:名称未設定 mailto:sage [2009/07/19(日) 15:57:57 ID:OgS132xy0]
↑おまえもな
俺もな
↓おまえもな

340 名前:名称未設定 mailto:sage [2009/07/19(日) 17:00:05 ID:LZopbPnM0]
しつけえwしかも負け惜しみのような予防線



341 名前:名称未設定 mailto:sage [2009/07/19(日) 18:11:20 ID:SsIx0Lsk0]
ココアどこ?わたしはだれ?

342 名前:名称未設定 mailto:sage [2009/07/19(日) 19:21:19 ID:eX6hUb+V0]
たわしは台所だよ

343 名前:名称未設定 mailto:sage [2009/07/19(日) 22:10:43 ID:1QVelrpL0]
>>254
これいいな
パッケージしてないコマンドラインやdylibにもバージョン情報が付けられる

344 名前:名称未設定 mailto:sage [2009/07/19(日) 22:30:57 ID:FA2oZFnq0]
>しつけえwしかも負け惜しみのような予防線
しつこいのはお前だけです

345 名前:名称未設定 mailto:sage [2009/07/19(日) 23:06:55 ID:aY4HNjmP0]
>>344
お前もだよ。これ以上くだらんことでスレ伸ばすな。
せっかく違う話題が出てきたのに。

346 名前:名称未設定 mailto:sage [2009/07/19(日) 23:18:44 ID:FA2oZFnq0]
>>344
そっくりそのままお前に返すよ 蒸し返すなボケ。

347 名前:名称未設定 mailto:sage [2009/07/19(日) 23:24:07 ID:eX6hUb+V0]
不毛な争いをさけるために質問投下〜


NSCollectionView をつかってあるカスタムヴューをタイル表示したいと考えてます。
これはは白と黒の二つの状態を持っていて、クリックすると切り替える事が出来る様な代物です。
これをタイル表示するだけならIBで CollectionView の設定をこちゃこちゃ弄ればできましたが、プログラムの側でこのヴューの状態を変更するにはどうすればいいんでしょうか?

それとも状態を管理するオブジェクトとヴューの実装は分けるべきなのでしょうか?その場合、CoreDataを使わないとヴューとオブジェクトの情報は共有出来ないんでしょうか?

348 名前:名称未設定 mailto:sage [2009/07/19(日) 23:38:14 ID:aY4HNjmP0]
>>346
自己レスw 恥ずかしくて今日はもう出てこれないなw

>>347
NSViewの上に色付きのNSBoxを置いて、NSCollectionViewItemのrepresentedObjectにバインドすれば
タイルそれぞれの色をプログラムから変更できるよ。
良くあるサンプルだとItemのisSelectableとNSBoxのisTransparentをバインドして選択時に色を変えるってことをやってるけどそれと同じ要領です。

349 名前:名称未設定 mailto:sage [2009/07/19(日) 23:47:39 ID:FA2oZFnq0]
>>348
そうだなあ お前のことだよね

350 名前:名称未設定 mailto:sage [2009/07/19(日) 23:51:24 ID:jnlIFE530]
全ては348の自演ってことでw



351 名前:名称未設定 mailto:sage [2009/07/19(日) 23:55:41 ID:aY4HNjmP0]
>>349
え、自分のことだろ?
お前らプログラムの話ししないなら来なくていいよ

352 名前:名称未設定 mailto:sage [2009/07/19(日) 23:57:37 ID:JKkBJTkW0]
>>349
お前もプログラム以外のレスばっかだな まあクズだからどうでもいいが

353 名前:名称未設定 mailto:sage [2009/07/20(月) 00:00:39 ID:eIylQz5Y0]
だよな>>349はクズだよな

354 名前:名称未設定 mailto:sage [2009/07/21(火) 23:35:22 ID:dSt7wfty0]
Cocoaについて質問します。
計算だけ行うファイルが作成したいのですが、色々なインスタンスで共有したい場合、
以下の2種類の方法が浮かびました。

1.計算用にインスタンスを作成して使用したいインスタンスと接続する。
2.新規に計算用ファイルを作成する。

1の方法でできる気がするんですが、何かスマート(正規)じゃない気がして、
2の場合、ファイル作成後の方法アクセス方法がわかりません。

すごく初歩的な質問ですがどうかよろしくお願いします。

355 名前:名称未設定 mailto:sage [2009/07/21(火) 23:41:08 ID:oBOOhOhO0]
日本語でおk

356 名前:名称未設定 mailto:sage [2009/07/21(火) 23:56:28 ID:+fLTn0Dr0]
>>355
なんだそのID
人のことをなめてるのか

357 名前:名称未設定 mailto:sage [2009/07/22(水) 00:05:22 ID:9iTeurL90]
>>354
とても初歩的な質問とは言えないな。
少なくとも俺には何て答えてあげれば良いか分からない。

358 名前:名称未設定 mailto:sage [2009/07/22(水) 00:38:33 ID:Q+qrNsC00]
>>355
初めましてオブーホホさん

359 名前:名称未設定 mailto:sage [2009/07/22(水) 01:18:27 ID:J+1HLFVf0]
>>356
初めましてフリチン踊ろさん

360 名前:名称未設定 mailto:sage [2009/07/22(水) 01:20:26 ID:Q+qrNsC00]
オーじゃなくてゼロだぞ



361 名前:名称未設定 mailto:sage [2009/07/22(水) 01:51:59 ID:FbmXO7Oe0]
>>354
エスパーしてみよう

複数のプログラムで共有するサブプログラムを作成したいのですが、次の二つの方法が浮かびました。
1 同じソースをそれぞれのプログラムに、includeしてbuildする。
2 ライブラリを作成してリンクする。

1の方法でできる気がするんですが、何かスマート(正規)じゃない気がして、
2の場合、ライブラリ作成方法も、リンク方法もさっぱりわかりません。

ではないかと。
返答は俺の手にあまるのでヨロ

362 名前:名称未設定 mailto:sage [2009/07/22(水) 02:30:58 ID:fs7x4U5o0]
インスタンスとあるから
複数のクラスで同じロジックを使いたいってことじゃないかとエスパー。
1.委譲パターン
2.両方にinclude
なんかな。
内容によるけど、自分ならクラス構成を見直すかCの関数にする。

てゆうかファイルってなによ?ソースコード?

363 名前:名称未設定 mailto:sage [2009/07/22(水) 12:07:13 ID:O0ZC9csxi]
「計算だけ行なうファイル」なんだから、ファイルマネージャで
計算式が書かれたファイルを作成してそこで計算したいんだよ。
で、計算が終わったらゴミ箱に自動で捨てられないかと。


364 名前:354 mailto:sage [2009/07/22(水) 15:21:19 ID:0rZU13D20]
質問の内容が不明瞭すぎでした。ごめんなさい。

内容としては>>362さんのESPでほぼあっており、同プログラム内の複数の
クラスから計算用ファイル内(ソースコード)のメソッドを使用したい場合、
どうするのが一般的なのかな?と思って質問させて頂きました。

まだプログラミング自体を初めて間もなく、Inteface Builderからの
ファイル作成しか行ったことが無いため、基本からじっくり覚える必要が
ありそうです...お騒がせして申し訳ありませんでした。

365 名前:名称未設定 mailto:sage [2009/07/22(水) 16:30:03 ID:gDixRqya0]
>>364
初学者なら、やさしいC(評判がいい)とオブジェクト指向を本で勉強すれば良いよ。
Obj-C本でオブジェクト指向を丁寧に解説しているのは知る限り無いから、Javaなり
C++なりで。他言語でも概念さえ理解すれば良いので、プログラム組めなくても良い。
>16 に書籍リストがあるから参考に。俺は、やさしいJava(やさしいCと同じ著者)で
何となくつかんだ。計算用ファイル?の使い方は、C(import、関数呼び出し)なのか、
Obj-Cなのか(import、インスタンス化してメソッド呼び出し)で違うし。
まずは基本と用語を押さえなされ。

366 名前:名称未設定 mailto:sage [2009/07/22(水) 16:34:19 ID:zBKu16TLi]
特にインスタンス化する必要がなければ、カテゴリーを使う手もあるよ。
手続き型プログラミングで言う共通関数見たいな感じ。

367 名前:名称未設定 mailto:sage [2009/07/22(水) 16:36:29 ID:vkUc5ogW0]
ちょっとした文字列処理のメソッドはNSStringのカテゴリにするね

368 名前:名称未設定 mailto:sage [2009/07/22(水) 16:44:43 ID:wGN9NjDE0]
純粋に計算機能だけなら C の関数で良いんじゃない

369 名前:名称未設定 mailto:sage [2009/07/23(木) 08:06:54 ID:8j1ZYujX0]
NSButtonが押されたときの挙動をオプションキーが押されているときだけ通常と違うものにしようとしていて
動作の振り分けは[[NSApp currentEvent] modifierFlags]で出来るようになったのですが、キーの状態に応じて
ボタンのタイトルも変えることはできるでしょうか?

キーダウンイベントを見てオプションキーの状態に応じてタイトルを変えればいいのかと思ったのですが、この
イベントの捕まえ方がよく分かりません。

370 名前:名称未設定 mailto:sage [2009/07/23(木) 08:24:55 ID:8j1ZYujX0]
自己解決しました。- (void)flagsChanged:(NSEvent *)theEvent を使えばいいんですね。

CocoaのAPIって名前がかなり個性的な気がする...



371 名前:名称未設定 mailto:sage [2009/07/23(木) 13:40:30 ID:jFn9LmdF0]
NeXTから続く由緒正しい命名だよ

372 名前:名称未設定 mailto:sage [2009/07/23(木) 13:59:54 ID:cf1GDGQm0]
メソッド名が途中で区切れるから大分違うよね
まあ慣れるとこれがあるからこれもあるだろうなって大体見当がつくけど

373 名前:名称未設定 mailto:sage [2009/07/23(木) 20:51:52 ID:agfiAmzl0]
NSOpenPanelでコンピュータフォルダを選択する(表示しているディレクトリをそこにする)方法はないでしょうか?

374 名前:名称未設定 mailto:sage [2009/07/23(木) 21:16:36 ID:YFVvJYY7i]
引数で指定できるはず。


375 名前:名称未設定 mailto:sage [2009/07/23(木) 21:22:30 ID:m3avjdT60]
NSOpenPanel *openPanel = [NSOpenPanel openPanel];
[openPanel runModalForDirectory:NSOpenStepRootDirectory() file:nil];
でおk
通常@"/"でもいいかも知れないけど。
ちなみにどういうことをしたいんでしょう?自分にはこれが必要な場面が思いつかないので完全に興味で聞いてますw

376 名前:名称未設定 mailto:sage [2009/07/23(木) 23:38:14 ID:36jctsky0]
試してみましたが、NSOpenStepRootDirectory(@"/"と同じ)では起動ディスクの選択になります。
表示させたいのは起動ディスクの1つ上、command+shift+Cで移動するところです。
仮想的なディレクトリなんでやっぱ無理ですかね。

ちなみに@"/.."でも起動ディスク。nilだと書類フォルダでした。
何をしてるかと言うと、NSOpenPanelを利用してごく簡単なファイルブラウザを作ってます。

377 名前:名称未設定 mailto:sage [2009/07/24(金) 00:40:49 ID:+ULXtVNo0]
NSOpenPanelでコンピュータのところ選択してdirectory読んでみてもnilしか返ってこないね。
なんか特殊なパスでもあればいいんだけど。

378 名前:名称未設定 mailto:sage [2009/07/24(金) 04:29:16 ID:2Dhu7bro0]
>>376
現在のボリュームのRootを取りたいのだと勘違いしてました。
ということで調べたけど分からなかったのでクソ強引な方法で無理矢理やってみました。

NSOpenPanel *openPanel = [NSOpenPanel openPanel];
NSEvent *event = [NSEvent keyEventWithType:NSKeyDown
location:NSZeroPoint
modifierFlags:NSShiftKeyMask | NSCommandKeyMask
timestamp:0
windowNumber:[openPanel windowNumber]
context:[NSGraphicsContext currentContext]
characters:@"c"
charactersIgnoringModifiers:@"C"
isARepeat:NO
keyCode:8];
[openPanel performSelectorOnMainThread:@selector(performKeyEquivalent:) withObject:event waitUntilDone:NO];
[openPanel runModal];

Panelのサブクラスを作ればディレクトリの移動のタイミングはもう少しきちんとできると思います。
というか正攻法はないもんですかね。もしくはプライベートメソッドのメソッド名を調べた方が賢明かも知れません。

379 名前:名称未設定 [2009/07/24(金) 19:12:52 ID:ndhArHaA0]
コンピュータのパスは、/Volumes

380 名前:名称未設定 mailto:sage [2009/07/24(金) 20:32:17 ID:oPQBlj+w0]
/Volumesは別物



381 名前:名称未設定 mailto:sage [2009/07/24(金) 22:42:48 ID:2Dhu7bro0]
>>379
それは単にボリューム
質問に上がってたのはFinderのサイドバーのデバイス>コンピュータ

382 名前:名称未設定 mailto:sage [2009/07/25(土) 20:27:13 ID:GHiQoSyC0]
NSOpenGLViewにテキストイメージを描画したいのですが、
描画した領域が真っ黒になってうまくいきません。

以下ソースですが、
NSImageにテキストを描画してNSBitmapImageRep*を経由して
データをglDrawPixels()に渡しています。

ソースはいろいろなHPを参考にしました。
詳しい方、よろしければご指南のほど、お願いいたします。
(その1)
NSTextStorage* textStorage;
NSTextContainer* textContainer;
NSLayoutManager* layoutManager;

textStorage = [[NSTextStorage alloc] initWithString:@"Hello"];
NSSize viewSize = [self bounds].size;
textContainer = [[NSTextContainer alloc] initWithContainerSize:viewSize];
layoutManager = [[NSLayoutManager alloc] init];
[textStorage addLayoutManager:layoutManager];
[layoutManager addTextContainer:textContainer];

NSRange range = [layoutManager glyphRangeForTextContainer:textContainer];
NSPoint point = NSMakePoint(0.0, 0.0);

383 名前:名称未設定 mailto:sage [2009/07/25(土) 20:27:59 ID:GHiQoSyC0]
 (その2) 

  NSImage* image;
NSSize size;
size.width = 50;
size.height= 30;
image = [[NSImage alloc] initWithSize:size];
[image lockFocus];
[layoutManager drawGlyphsForGlyphRange:range atPoint:point];
[image unlockFocus];

NSBitmapImageRep* rep;
rep = [[NSBitmapImageRep alloc ] initWithData:[image TIFFRepresentation]];
glDrawPixels( 50, 30, GL_RGBA, GL_UNSIGNED_BYTE, [rep bitmapData] );

[image release];
[rep release];

[textContainer release];
[layoutManager release];



384 名前:名称未設定 mailto:sage [2009/07/25(土) 22:32:42 ID:r65MHccJ0]
>>382
順番としてまずglDrawPixelsだけ試してちゃんと出来たんですよね?

だとすると[rep bitmapData]の中身が適切にできてないんでしょう。
多分合ってると思いますが、ピクセルフォーマットも気になります。

知ってるかもだけど、レイアウトとか関係なければNSStringの-drawInRectとかの方が楽だよ。

385 名前:名称未設定 mailto:sage [2009/07/26(日) 19:02:28 ID:TYBX3STi0]
>>384
レスありがとうございます。
(亀レス申し訳ありません。)


>多分合ってると思いますが、ピクセルフォーマットも気になります。
glDrawPixelsに指定しているフォーマットでしょうか?
GL_RGBA, GL_UNSIGNED_BYTEについては、GL_RGBとかいろいろと
変えてみてますが、(当然と申しますか)うまくいきません。

>だとすると[rep bitmapData]の中身が適切にできてないんでしょう。
 repインスタンスを使ってPNGファイルにデータを保存したところ、
 「Hello」と保存されましたが。。。
(repインスタンスの内部データがおかしいのであれば、
 PNG形式の保存結果も変になりそうな悪寒)

とはいえ、ご指摘のように[rep bitmapData]でデータの中身がおかしい
のか、ピクセルフォーマットの指定がおかしいのかもう少し調べてみます。
 ・・・[rep bitmapData]で返るデータをダンプしてみないといけないかな。
(と殊勝な台詞を吐きつつ神降臨祈願w)


>知ってるかもだけど、レイアウトとか関係なければNSStringの-drawInRectとかの方が楽だよ。
文字データをピクセルデータにできればテクスチャとしてポリゴンに貼付けられるだろうという
目論みがありまして。。。

386 名前:名称未設定 mailto:sage [2009/07/27(月) 14:03:57 ID:wX3dlGND0]
>>385
複数行にわたる文字列を幅を変えつつかきたいとかいうのでなければ
NSLayoutManager という非常に高機能なのは使わなくても出来ますよ。
単に
[image lockFocus];
[@"Hello" drawInRect: NSMakeRect( ) ];
[image unlockFocus];
で十分です。

387 名前:382 mailto:sage [2009/07/27(月) 19:56:41 ID:R7rh2VS40]
>>386
 ナルホド。NSLayoutManagerの役割をよくわからずに使ってました。
 丁寧なご説明ありがとうございます。
 そもそも、
 >>384の”知ってるかもだけど、レイアウトとか関係なければ
 NSStringの-drawInRectとかの方が楽だよ。”
 に対して、>>385での私の返答は変ですね。(何を勘違いしていたのだろうか・・・)

388 名前:384 mailto:sage [2009/07/28(火) 00:51:17 ID:MxymMuHb0]
>>385
ちょっと試してみました。

>glDrawPixelsに指定しているフォーマットでしょうか?
どちらがではなく、まず[rep bitmapData]のフォーマットを調べて、それをglDrawPixelsに設定するのが手順でしょう。
とりあえず[rep samplesPerPixel]が3ならRGB、4ならRGBAで問題ないようです。

後はlockFocusの所を次のように変更して大丈夫そうです。
[image lockFocus];
[[NSColor whiteColor] set];
NSRect theRect = {0,0, size:size};
NSRectFill(theRect);
[[NSColor blackColor] set];
[layoutManager drawGlyphsForGlyphRange:range atPoint:point];
[image unlockFocus];

389 名前:384 mailto:sage [2009/07/28(火) 01:06:26 ID:MxymMuHb0]
>>385
あ、私もちょっと勘違い。

>>385,386のコードでも問題ないです。
repがalpha込みのイメージだったので、黒背景の上に描写しても見えなかったんだと思います。

390 名前:384 mailto:sage [2009/07/28(火) 01:10:36 ID:MxymMuHb0]
訂正。

最初の>>382-383のコードでも問題ないです。
repがalpha込みのイメージだったので、黒背景の上に描写しても見えなかったんだと思います。



391 名前:382 mailto:sage [2009/07/28(火) 21:25:42 ID:0XCRQfhW0]
>>387-390
  ありがとうございます!!

392 名前:147 mailto:sage [2009/08/02(日) 13:01:43 ID:YoJVpRhf0]
ことえりや ATOK で入力中 (変換前) や変換中の文字色や背景色を変更する Cocoa の
クラス or メソッドはないのでしょうか。
IM ことえり 文字色 入力中 などでググってみたのですが、適切なエントリを
見つけられなくて... ご存じの方がいらっしゃいましたら、ご教示下さい。

393 名前:名称未設定 mailto:sage [2009/08/02(日) 15:36:40 ID:xJPaeZkv0]
あるとすればimkitかな?自信なし。

394 名前:名称未設定 [2009/08/03(月) 21:14:41 ID:O5tmi7FS0]
>>392
フィールドエディター(NSTextView)をカスタマイズすればOK

395 名前:名称未設定 mailto:sage [2009/08/04(火) 15:18:51 ID:Bgqz1Pdz0]
1ビット深度モノクロBMPを作りたいのですが、

NSBitmapImageRep* rep = [[[NSBitmapImageRep alloc] initWithBitmapDataPlanes: nil
 pixelsWide: width pixelsHigh: height bitsPerSample: 1 samplesPerPixel: 1 hasAlpha: NO isPlanar: NO
 colorSpaceName: NSCalibratedWhiteColorSpace bytesPerRow: 0 bitsPerPixel: 0] autorelease];

として作った bitmapは
 [rep TIFFRepresentation]
なら NSDataを取得&保存可能なんですが、
 [rep representationUsingType: NSBMPFileType properties: nil];
だとエラー↓が出ます。

<Error>: CGImageDestinationAddImage image could not be converted to destination format.
<Error>: CGImageDestinationFinalize image destination does not have enough images
CGImageDestinationFinalize failed for output type 'com.microsoft.bmp'

NSBMPFileType型で NSDataが欲しいんですが、何か足りないんでしょうか?

396 名前:名称未設定 mailto:sage [2009/08/04(火) 16:20:49 ID:oBGTsy0qi]
マイクロソフトのフォーマットだからアクチベーションと
セキュリティアップデートが必要なんじゃね?

397 名前:名称未設定 mailto:sage [2009/08/04(火) 17:45:45 ID:Bgqz1Pdz0]
>>396
どうもです。
そ、それは Cocoaデフォじゃできないって意味でしょうか...?
アクティベーションとセキュリティアップデートってのは何をすれば良いんでしょうか。

398 名前:名称未設定 mailto:sage [2009/08/04(火) 17:54:49 ID:sKwsL4/I0]
釣られてる釣られてるw

もしかしたら俺が(ryという説もあるが

399 名前:名称未設定 mailto:sage [2009/08/04(火) 18:13:51 ID:LBGJ0uRr0]
古い情報だけど
www.cocoabuilder.com/archive/message/cocoa/2003/11/13/78073

400 名前:名称未設定 mailto:sage [2009/08/04(火) 18:49:38 ID:OEUtE+Zz0]
そもそもBMPにそんなバリエーションが無かったような。



401 名前:名称未設定 mailto:sage [2009/08/04(火) 18:50:34 ID:Bgqz1Pdz0]
>>398
ちょw ハマってる人間にそれは酷というもの。。冗談通じる状態じゃないですorz
真に受けちゃってすいませんね

>>399
ありがとう。
GWorldか自分で一から作るか、か。サクっとはいかないようですね。。

402 名前:名称未設定 mailto:sage [2009/08/05(水) 23:52:41 ID:JKB/ih1/0]
たとえば、.bmpファイルをNSImageに読み込んで、そのNSImageRepからNSDataを取り出したら、どうなりますか?


403 名前:名称未設定 mailto:sage [2009/08/07(金) 16:01:39 ID:tRv9KwYi0]
1bit bmpを NSImageに読みこんだ時点で 8bitになるね

>>399にある通り、bmp生成コードの制限ですな

404 名前:名称未設定 mailto:sage [2009/08/07(金) 20:10:30 ID:qrVkAWDF0]
CFStringRef theString = CFStringCreateWithFormat(kCFAllocatorDefault, NULL, (CFStringRef)[@"file://" stringByAppendingString: [opanel filename]], CFSTR(""));
CFURLRef downloadURL = CFURLCreateWithString(kCFAllocatorDefault, theString, NULL );
CFReadStreamRef readStream = CFReadStreamCreateWithFile(kCFAllocatorDefault, downloadURL);
CFReadStreamOpen(readStream);

NSOpenPanel で開いたローカルファイルを CFReadStreamOpen したいのですが、
フォルダかファイル名に2バイト文字が入ると
CFReadStreamOpen した時点で EXC_BAD_ACCESS になります。
何かヒントをいただけませんでしょうか。

405 名前:名称未設定 mailto:sage [2009/08/07(金) 20:27:20 ID:cLVHr6eV0]
>>404
ファイルパスからURLを作るときはCFURLCreateWithFileSystemPathのような専用の関数かメソッドを使う。

406 名前:404 mailto:sage [2009/08/07(金) 22:52:25 ID:Rq3pRtI/0]
>>405
おかげさまで解決しました、ありがとうございました!

407 名前:名称未設定 mailto:sage [2009/08/09(日) 13:54:08 ID:pqjX0Hn30]
あるアプリから別のアプリにメッセージを送りたいんだが、
調べた感じだとNSWorkspaceの通知センターに送ればいいということなんだが、うまくいかない。
やりかた間違ってるのか、もしくは別の方法あるかな?


受け取り側
NSNotificationCenter *notCenter = [[NSWorkspace sharedWorkspace] notificationCenter];
[ notCenter addObserver : self
selector : @selector(receive:)
name : @"myAppAddMessage"
object : nil ];

送信側
NSNotificationCenter *notCenter = [[NSWorkspace sharedWorkspace] notificationCenter];
[ notCenter postNotificationName : @"myAppAddMessage"
object : self ];

408 名前:名称未設定 mailto:sage [2009/08/09(日) 14:10:12 ID:UvdtatgO0]
>>407
NSWorkspaceのNotificationCenterはNSWorkspaceからのNotificationを受け取るためのもの
(スリープから復帰したとかそんなの)で、他のアプリケーションのNotificationを受け取るのは
NSDistributedNotificationCenterじゃなかったかな。使ったことないけど。
あとNSDistributedNotificationCenterでは通知オブジェクトにはNSString以外使えない。

409 名前:407 mailto:sage [2009/08/09(日) 15:09:06 ID:pqjX0Hn30]
>>408
試してみたらできました
ありがとうございます
せっかくなので修正コードを

受信側
NSDistributedNotificationCenter *notCenter = [ NSDistributedNotificationCenter defaultCenter ];
[ notCenter addObserver : self
selector : @selector(receive:)
name : @"myAppAddMessage"
object : nil ];

送信側
NSDistributedNotificationCenter *notCenter = [ NSDistributedNotificationCenter defaultCenter ];
[ notCenter postNotificationName : @"myAppAddMessage"
object : @"test message" ];

410 名前:名称未設定 mailto:sage [2009/08/10(月) 02:43:09 ID:no51mhYR0]
>>407-409
偶然、同じようなことを調べてて助かったよ。さんくす。




411 名前:名称未設定 mailto:sage [2009/08/11(火) 15:08:43 ID:+aKHmRkj0]
CIImageって実体はGPUのメモリ上にあるんでしょうか。

412 名前:名称未設定 mailto:sage [2009/08/11(火) 16:20:51 ID:vdnvvxv+0]
実体って何?

413 名前:名称未設定 mailto:sage [2009/08/11(火) 16:37:01 ID:t19uQ7CVi]
冷却ファンの後ろのほうにあるんじゃね?

414 名前:名称未設定 mailto:sage [2009/08/11(火) 20:29:30 ID:/ur2/1WL0]
>>411
OpenGLのテクスチャを扱うプロクシオブジェクトと言えばいいのかな。

CGはQuartzでメインメモリ上にデータもオブジェクトもある。
CIはOpenGLでデータはGPUメモリ上、メインメモリにOpenGLの
構造体とプロクシオブジェクトがある。

CGContextがメインメモリ上のバッファを描画領域としてあつかう
構造情報のオブジェクトで
CIContextがOpenGLのテクスチャに対応する描画領域のry)で。

[CIContext contextWithCGContext...]ってやると、CIImageをCGContextに
書き戻すための情報を持ったCIContextを作る。みたいな。

あと、Quartz Extremeは、CIとは別に、OpenGLテクスチャをQuartzの
世界で扱えるようにした拡張機能みたいだがその辺は良くわからん。


415 名前:411 mailto:sage [2009/08/12(水) 09:10:24 ID:8EQF5ahZ0]
>>414
ありがとうございました。
CoreVideoとCIImageのドキュメントを読んでいたんですが、
その辺のところがいまいちよくわかった物ですから・・・。助かりました。

416 名前:名称未設定 [2009/08/12(水) 13:01:34 ID:0rxFCG6Y0]
■ おすすめ2ちゃんねる 開発中。。。 by FOX ★
このスレを見ている人はこんなスレも見ています。(ver 0.20)
【Cocoa】ミラ・ココア【ジーノ後継?】 [軽自動車]
【UOT-100】24時間ワンセグ野郎 Part03【LOG-J200】 [DTV]

417 名前:名称未設定 mailto:sage [2009/08/18(火) 09:49:25 ID:HNFALhI+0]
omniframeworksってどこからDLするんだろう


418 名前:名称未設定 mailto:sage [2009/08/18(火) 10:03:21 ID:Uk5wTA+e0]
github.com/omnigroup/omnigroup/tree/master/

ていうかグーグル使えよ。

419 名前:名称未設定 mailto:sage [2009/08/18(火) 10:13:42 ID:HNFALhI+0]
いや、そこから先のリンク踏んでもなかなか繋がらないんです。
あとソースがばらばらにおいてあるみたいだし、ディスクイメージでおいてないのかなと思って。

420 名前:名称未設定 mailto:sage [2009/08/18(火) 10:22:52 ID:7VnT6c2U0]
下のREADME.txtに親切丁寧に説明が書いてあるじゃねーかw
git持ってなきゃ上のdownloadからDLすればいいだけ



421 名前:名称未設定 mailto:sage [2009/08/18(火) 10:29:51 ID:HNFALhI+0]
んーgit使ってみます。Downloadsは(0)になってるみたいだし。
もうちょっと自力でなんとかしてみます。どうもでした。

422 名前:名称未設定 mailto:sage [2009/08/18(火) 10:37:26 ID:7VnT6c2U0]
「↓download」と書いたボタンが!!

423 名前:名称未設定 mailto:sage [2009/08/18(火) 10:50:26 ID:6CFB0bwp0]
>>422
おまいの優しさに全国の俺が泣いた

424 名前:名称未設定 mailto:sage [2009/08/18(火) 15:42:24 ID:ppfEbrznP]
今正規表現使おうと思うんだったらRegexKitのほうがよかないか?

425 名前:名称未設定 mailto:sage [2009/08/18(火) 15:54:51 ID:Uk5wTA+e0]
突然誰と会話してるんだ?

426 名前:名称未設定 mailto:sage [2009/08/18(火) 16:03:02 ID:ppfEbrznP]
>>425
つか今時omniを使うのなんて正規表現くらいじゃないのか?


427 名前:名称未設定 mailto:sage [2009/08/18(火) 16:09:43 ID:EnJWVKSY0]
ハロー! おむ兄(にぃ)だよ!

428 名前:名称未設定 mailto:sage [2009/08/18(火) 16:11:09 ID:Uk5wTA+e0]
そんな個人的な思い込みを仮定されて話を始められても困るな。
Omni Framework の GUI まわりもいろいろ使い道があると思うが。


まあでも何が起こってるのかわかったから安心しました。どうも。

429 名前:名称未設定 mailto:sage [2009/08/19(水) 07:34:28 ID:YG6FVPkw0]
Omniの正規表現はlibcのregex(3)だからむしろ使いにくい部類だと思うけどなあ。

430 名前:名称未設定 mailto:sage [2009/08/19(水) 07:46:47 ID:YG6FVPkw0]
記憶違い。自前の実装だった。



431 名前:名称未設定 mailto:sage [2009/08/19(水) 12:48:55 ID:fuGwztFRi]
つーか、なんで正規表現サポートしないんだ?
今どきの言語だとありえないでしょ。


432 名前:名称未設定 mailto:sage [2009/08/19(水) 12:53:51 ID:OEzk8AJL0]
>>431
言語がサポートするものではないだろ

433 名前:名称未設定 mailto:sage [2009/08/19(水) 13:11:26 ID:gTZtW1QA0]
OS標準でフレームワークを用意してほしい

434 名前:名称未設定 mailto:sage [2009/08/19(水) 14:05:46 ID:6iTd1e4G0]
つ NSPredicate

435 名前:名称未設定 mailto:sage [2009/08/19(水) 14:30:58 ID:aBOmCaIg0]
1. WebKit 付属の JavaScript 経由で触る
2. regex.h をつかう
3. ICU regex ライブラリにリンクしてつかう
4. Perl, Python 等を呼び出す
等 OS 標準で regex が使えないわけではないです

まあいい加減 NSString に標準のメソッドを追加してくれと思うが。

NSPredicate はマッチしかできなかったんでは。

436 名前:名称未設定 mailto:sage [2009/08/19(水) 15:21:56 ID:x/YzYrjdi]
標準じゃないと、配布する時に面倒だし。

437 名前:名称未設定 mailto:sage [2009/08/19(水) 15:34:02 ID:t1FuhkY40]
.DLLとか.OCXと一緒にしてる悪寒

438 名前:名称未設定 mailto:sage [2009/08/19(水) 15:42:53 ID:4yqXsv5J0]
基本的にアプリケーションバンドルに内包しちゃうよね
自分しか使わないのは ~/Library/Frameworks/ にいれちゃうけど

439 名前:名称未設定 mailto:sage [2009/08/19(水) 15:45:07 ID:3XLeyTEli]
フレームワークをdllとかに例えてる時点でいまいちな悪寒

440 名前:名称未設定 mailto:sage [2009/08/19(水) 21:48:47 ID:kr/BAt1ii]
>>435
matches以外にもcontainsとかlikeとかあるよ



441 名前:名称未設定 mailto:sage [2009/08/19(水) 22:11:11 ID:1dFKi5XT0]
frameworkとdllの違いをCocoa的に語るとどうなるのかな

442 名前:名称未設定 [2009/08/22(土) 17:59:57 ID:GML0g0OM0]
軽自動車のスレじゃないのか・・・

443 名前:名称未設定 mailto:sage [2009/08/22(土) 18:01:35 ID:fZKoRrWN0]
>>442
>>416の結果に荷担しているのはおまえか!

444 名前:名称未設定 mailto:sage [2009/08/22(土) 18:33:44 ID:I1H2DNZ40]
デザインの良さをアピールしてるけど、あれをカッコいいと思う奴は眼科に行った方が良いと思う。

445 名前:名称未設定 mailto:sage [2009/08/22(土) 18:40:56 ID:rSxq6hLB0]
どこの誤爆だろう...
もしかして車関係スレかw

446 名前:名称未設定 mailto:sage [2009/08/22(土) 18:56:30 ID:I1H2DNZ40]
>>445
すまん、ミラ・ココアの話。

447 名前:名称未設定 mailto:sage [2009/08/25(火) 14:02:40 ID:I1ZO+cX3P]
ミラココアはチンクチェントとラパンのパクリだし

ヌル文字が途中に入ってるNSStringのドキュメントからヌル文字を除去したいんだけど
どうするのが一番楽かな

448 名前:名称未設定 mailto:sage [2009/08/25(火) 16:41:48 ID:xK/BoT+h0]
>>447
これでどう?
stringByReplacingOccurrencesOfString:@"\0" withString:@""

449 名前:名称未設定 mailto:sage [2009/08/26(水) 10:13:50 ID:DKZUcChhP]
>>448
ありがとう。でもうまくいかんかった。
もうちょっと自分でがんばってみるよ。

450 名前:名称未設定 mailto:sage [2009/08/26(水) 11:46:32 ID:5Mw01DFg0]
>>449
448をそのまま入力/コピペしたってことはないよな?
バックスラッシュが全角だからそらうまくいかんよ。



451 名前:名称未設定 mailto:sage [2009/08/26(水) 13:59:36 ID:DKZUcChhP]
>>450
うん。それはやってるんだけど、なんか文字列がいろいろ特殊みたいで。
スキルがないだけかもしれないけど。

452 名前:名称未設定 mailto:sage [2009/08/26(水) 20:12:56 ID:5Mw01DFg0]
どっからそんな文字列を拾ってきたんだ?
ヌル文字が混ざるとか滅多にないはずだからすごい気になる。

453 名前:名称未設定 mailto:sage [2009/08/26(水) 20:14:36 ID:TEy/gmIa0]
正規化したら消えてなくなるとかないかな

454 名前:名称未設定 mailto:sage [2009/08/27(木) 01:22:38 ID:Qeoje6Iv0]
PDFからコピペしたらヌル文字入ってたことあったね。

455 名前:名称未設定 mailto:sage [2009/08/27(木) 02:52:59 ID:NJnbkQsA0]
thousandのwebviewからコピペして書き込みしようとしたら書き込めないことがあったけど
ヌル文字が入ってたのかな

456 名前:名称未設定 mailto:sage [2009/08/27(木) 09:33:59 ID:vGlaq08O0]
コピペで入ってくるのはヌル文字じゃなくて
'REPLACEMENT CHARACTER' だと思う

457 名前:名称未設定 mailto:sage [2009/08/27(木) 17:55:29 ID:NJnbkQsA0]
なるほど。

458 名前:名称未設定 mailto:sage [2009/08/28(金) 09:14:14 ID:i7dli06C0]
とある掲示板のDATファイルが、
バイナリで読むと00で、ブラウザで読むとカンマに変換されるのがあったよ。
そういうのかな。

459 名前:名称未設定 mailto:sage [2009/08/28(金) 16:58:12 ID:DfKNgteGP]
あー
NSOutlineViewの使い方がぜんぜんわからんのですが、
良い本ないですか。

460 名前:名称未設定 mailto:sage [2009/08/28(金) 17:00:18 ID:mLs2EjSJi]
比較的シンプルでわかりやすいサンプルなら探せばあるかと。



461 名前:名称未設定 mailto:sage [2009/08/28(金) 17:59:38 ID:fKPLPAC+0]
HMDTでデータソースとバインディング両方の使い方が載ってた。本は別だった気がするけど

462 名前:名称未設定 mailto:sage [2009/08/29(土) 00:49:32 ID:is9di1Fp0]
Cocoaアプリから環境設定の壁紙を
変更したいのですが、どうやればいいのでしょうか?

463 名前:名称未設定 mailto:sage [2009/08/29(土) 04:26:36 ID:g3bcjHMB0]
Cocoaでペイント系のソフトを作りたいんだが、
マウスでドラッグした軌跡を描くだけの場合、
カーソルが動くたびにCGContextAddLintToPointで点を追加して描画するのでおk?
ドロー系ならともかく、直に描画したいんだが。。。
(これじゃあブラシは実現できそうにない;)
参考文献で良いからだれか教えて。

464 名前:名称未設定 mailto:sage [2009/08/29(土) 06:22:45 ID:yyMBQF0r0]
ビットマップ配列取り出して指定座標に直接輝度値書き込んじゃう方法だとどうだろう

465 名前:名称未設定 mailto:sage [2009/08/30(日) 01:15:39 ID:l9pHU/hj0]
>>464
ありがとう。
やはりQuartzに基づいてるから仕方ないですよね。。

466 名前:名称未設定 mailto:sage [2009/08/30(日) 22:45:35 ID:A6nkLJf40]
>>462
ディスプレイ一枚ならアップルスクリプト呼べばできた。
複数だと一枚しか変わらない。
検索キーワードはdesktop picture、api、cocoa、macとか適当に組み合わせて。
このコードでできたけど、アップルスクリプトはコピペなんで意味はよくわかりません。
- (IBAction)button:(id)sender {
NSOpenPanel *openPanel = [NSOpenPanel openPanel];
if ( NSOKButton == [openPanel runModal] ) {
NSString *filename = [openPanel filename];
NSLog(filename);

NSString *s1 = @"tell application \"System Events\" \n";
NSString *s2 = @"set picture of current desktop to ";
NSString *s3 = @"end tell \n";
NSString *setScript = [NSString stringWithFormat:@"%@%@\"%@\"\n%@",
s1, s2, filename, s3];
NSLog(setScript);

NSAppleEventDescriptor *ret;
NSDictionary *errorInfo;
NSAppleScript *script = [[NSAppleScript alloc] initWithSource:setScript];
ret = [script executeAndReturnError:&errorInfo];
[script release];
}
}

467 名前:名称未設定 mailto:sage [2009/08/31(月) 19:23:13 ID:/QD97ceJ0]
>>466
できました!

でも10.5では正常に動くけど10.4では何故かエラー。。。orz
アップルスクリプトスレで聞いてみます。

ありがとうございました!

468 名前:名称未設定 mailto:sage [2009/08/31(月) 20:22:24 ID:nEnYgci80]
はじめてレポートしたバグが10.6で直ってた。なんかうれしい。で、質問です。
なんかAppleからbug reportのreviewをしとけってメールが来たんですが、具体的には
何をすれば良いの? "State" はOpenになってて、赤字になってます。"Resolved"ボタン
を押せば良いのかなぁ?

469 名前:名称未設定 mailto:sage [2009/08/31(月) 23:25:00 ID:XFmTc96I0]
Cocoaでショートファイル名を使う方法は無いでしょうか。
ずっと調べているのですがいまだに分りません・・・orz

470 名前:名称未設定 mailto:sage [2009/08/31(月) 23:46:24 ID:ZAwBgW8r0]
ショートファイル名?



471 名前:名称未設定 mailto:sage [2009/08/31(月) 23:49:57 ID:T7yUvDFU0]
MS-DOSの機能?
Macには関係なさそうだけど

472 名前:名称未設定 mailto:sage [2009/09/01(火) 00:26:07 ID:twMpNsBm0]
>>470
>>471
DOSの、ファイル名8+文字拡張子3文字のやつです。
Winでhogehogehoge.txt → hogeho~1.txt などに変換されるやつです。
Macで同じようにロング名からショート名を取る方法がないか調べていました・・・

473 名前:名称未設定 mailto:sage [2009/09/01(火) 00:48:13 ID:c7pqEyz20]
そもそも存在しないし必要もないだろう

474 名前:名称未設定 mailto:sage [2009/09/01(火) 00:59:33 ID:w0f9R1iW0]
>>468
Append New InformationのところでResolvedにチェックを入れて、
さんきゅーwたすかったぜw
って書き込むんだ。

そんだけでOK。赤字が無くなる。そのうちClosedにしてくれるから。

475 名前:名称未設定 mailto:sage [2009/09/01(火) 03:27:38 ID:YC65Kq3r0]
>>472
よく知らないけどググったらどうやらNTFSとかファイルシステムに関連したことっぽいので
Macじゃそこにアクセスするのは難しい気がする。

476 名前:名称未設定 mailto:sage [2009/09/01(火) 08:35:09 ID:twMpNsBm0]
>>473
>>475
Tiger以前?のAPIでショート名取れるのがあったらしい。
そのAPIが無くなってしまったような記事は見つけました・・・ダメじゃん。
とにかくありがとうございます。もう少し調べてみます。

477 名前:名称未設定 mailto:sage [2009/09/01(火) 09:03:48 ID:MCd6XrID0]
>>474
ありがとう、やってみます。

478 名前:名称未設定 mailto:sage [2009/09/01(火) 09:52:28 ID:jaTGs2svP]
10.6はヘルプビューワのバグが未だに残ってる・・・

479 名前:名称未設定 [2009/09/01(火) 14:43:46 ID:HAxYnH8a0]
CoreDataの詳しい解説がある参考書とかないでしょうか

480 名前:名称未設定 mailto:sage [2009/09/01(火) 14:48:44 ID:+wKrADzA0]
HMDT 3rd Editionがそんな本じゃなかったっけ?
読んでないけど



481 名前:名称未設定 mailto:sage [2009/09/01(火) 15:13:30 ID:+aNSgP7o0]
ADCのリファレンスサイトが変更されて日本語のリソースの場所が
わからなくなっちまったな。

482 名前:名称未設定 mailto:sage [2009/09/01(火) 15:19:56 ID:JrKCuccJ0]
>>476
FSSpecのAPIは別に無くなっていないから、32bitアプリであれば使えるけど利用目的が解らん。
ASCII以外のUnicodeファイル名が付いてるとゴミみたいな物しか返らんよ。






[ 新着レスの取得/表示 (agate) ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<139KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef