- 1 名前:名称未設定 mailto:sage [2009/01/13(火) 22:26:12 ID:TtNlCCCM0]
- 前スレ
Cocoaはさっぱり!!! version.11 pc11.2ch.net/test/read.cgi/mac/1224960170/ Cocoaはさっぱり!!! version.X(10) pc11.2ch.net/test/read.cgi/mac/1211290055/ Cocoaはさっぱり!!! version.9 pc11.2ch.net/test/read.cgi/mac/1201106820/ Cocoaはさっぱり!!! version.8 pc11.2ch.net/test/read.cgi/mac/1179498292/ Cocoaはさっぱり!!! version.7 pc11.2ch.net/test/read.cgi/mac/1161486802/ Cocoaはさっぱり!!! version.6 pc11.2ch.net/test/read.cgi/mac/1146391229/ Cocoaはさっぱり!!! version.5 pc11.2ch.net/test/read.cgi/mac/1124986925/ Cocoaはさっぱり!!! version.4 pc11.2ch.net/test/read.cgi/mac/1091927026/ Cocoaはさっぱり!!! Version.3 pc5.2ch.net/test/read.cgi/mac/1063295248/ Cocoaはさっぱり!version:2 pc11.2ch.net/test/read.cgi/mac/1036923528/ Cocoaはさっぱり! pc11.2ch.net/test/read.cgi/mac/1007632025/
- 2 名前:名称未設定 mailto:sage [2009/01/13(火) 22:28:24 ID:TtNlCCCM0]
- 関連スレ
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/
- 3 名前:名称未設定 mailto:sage [2009/01/13(火) 22:39:37 ID:TtNlCCCM0]
- 関連追加
iPod touch/iPhone ネイティブアプリ製作 ver.8 pc11.2ch.net/test/read.cgi/mac/1231156968/ Objective-C [ObjC part:3]; pc11.2ch.net/test/read.cgi/tech/1186543111/
- 4 名前:名称未設定 [2009/01/13(火) 23:08:47 ID:H0hDNQK00]
- 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
- 5 名前:名称未設定 mailto:sage [2009/01/14(水) 01:13:18 ID:bEd33IEe0]
- >>1
(・ω・`)乙 これは乙じゃなくてポニーテールなんだからね!
- 6 名前:名称未設定 [2009/01/14(水) 01:51:20 ID:zQKDdF+j0]
- >>1
ポニーテール!
- 7 名前:名称未設定 [2009/01/14(水) 16:52:14 ID:2Od3YeYO0]
- ,,,,,,_
,,,,,iiiilllllllllllllliii,,,, ,,,,,_ .,,,,,,,,,,iiiiiiillllllllllllllllllllllllllllllllllll丶 ゙llllllllliiillllllllllllllllllllllll!!!!llllllllllllllllllllllll!!゙ ゙!llllllllllllllllllll!!!゙゙゙° ,,illllllllllllllllllll!゙゜ ゙!lllllll!!l゙゙’ .,,illlllllllllllllll!!゙゜ ^ .,,illllllll 山 ,,illlllll iiiiiiiiiiiir ,,illllllllヽoOOO''o_- ,,illlllllll( <:::::::乙::::::::>ヽ ,,illllllllll!/ ,|:::::::::::::::::|ヽ ゝ ,,illllllllll!゙ ,< )ヽ,━━./ ( / liiii,, ,,illllllll!゙゜ ,lヽ i /::::::::::::::ヽ i .r 'llllllli,, ,,illllllll!゙ !!|;;;;;;;;;;;;;;;;;;;;| !!, lllllllllli,, ,illlllllll゙ |::::::::∧::::::::| ,lllllllllllllii, llllllllllli,_ .|::::::::| |::::::::| ,,,,illlllllllllllllllli, こ、これは>>1乙じゃなくて !llllllllllllllliiiiiiiiiiiiii,,,|::::::::| |::::::::|llllllllllllllllllllllllllll 瞬獄殺なんだから ゙゙!!llllllllllllllllllllllllll|::::::::|. |::::::::|lllllllllllllllllllllllll 変な勘違いしないでよね! ゙゙゙゙!!!!!!llllll_ ノ;;;;;;;;r. |::::::::レ_lll!!!!!!!l゙゙゙゜ 'ーー" "ーー' あと、ヘボい質問なんですがcocoaアプリから別のアプリを実行した時にそのアプリがアクティブになりますよね? その後、元のcocoaアプリをアクティブにしたいのですがどうしたらよいのでしょうか…
- 8 名前:名称未設定 mailto:sage [2009/01/14(水) 16:58:22 ID:2Od3YeYO0]
- 自己解決しました(´・ω・`)
スレ汚してすんません…
- 9 名前:名称未設定 mailto:sage [2009/01/14(水) 19:35:07 ID:P+BRcwQe0]
- 解決方法はどんなときでも晒しといた方が
同じ問題にぶち当たった人のためになると思う
- 10 名前:名称未設定 mailto:sage [2009/01/15(木) 01:00:17 ID:N5HZEMqr0]
- そろそろ確定申告の事を考えないといかん時期だな。
- 11 名前:名称未設定 mailto:sage [2009/01/15(木) 01:03:14 ID:N5HZEMqr0]
- 盛大に誤爆ったorz
- 12 名前:名称未設定 [2009/01/15(木) 01:09:22 ID:upzL9L0e0]
- MORINAGAの人?
- 13 名前:名称未設定 mailto:sage [2009/01/16(金) 22:20:19 ID:z0eHNRBe0]
- ここにいる方々は、普段どんな仕事をしてるんですか?
- 14 名前:名称未設定 mailto:sage [2009/01/16(金) 22:43:09 ID://jRGAOJ0]
- 底辺プログラマ
- 15 名前:名称未設定 mailto:sage [2009/01/17(土) 14:18:31 ID:w58sAeN+0]
- 他人の書いたプログラムの虫取り(´;ω;`)
- 16 名前:名称未設定 mailto:sage [2009/01/17(土) 16:59:24 ID:FvBk0qG30]
- ぶっちゃけ今はiPhoneぐらいだもんね。飯の種は。
cocoaで便利なアプリを作っても金を出してまで買ってくれる人はそんなにいなさそう。
- 17 名前:名称未設定 mailto:sage [2009/01/17(土) 18:09:22 ID:nxgihjOe0]
- Cocoaでエロゲつくればドザが釣れるかも試練
- 18 名前:名称未設定 [2009/01/17(土) 19:24:02 ID:/MEyp2B50]
- あんなもん画像に合わせて音とテキスト流してるだけだから
作ろうと思えばすぐに作れるだろうな。
- 19 名前:名称未設定 mailto:sage [2009/01/17(土) 20:32:16 ID:b7hUTCNO0]
- CoreAnimationまわりのフレームワーク使ったらかなり楽に作れる気はする。
紙芝居的なシロモノだが。
- 20 名前:名称未設定 mailto:sage [2009/01/17(土) 21:04:09 ID:j2Iu8BFS0]
- >>19
Flashでええやん、紙芝居ならw もうすっかり忘れちまったよObjC
- 21 名前:名称未設定 mailto:sage [2009/01/17(土) 21:46:34 ID:8QKDDPhx0]
- >>20
よく考えたら、Windowsのエロゲ程度ならFlashで 作れそうだよな。
- 22 名前:名称未設定 [2009/01/17(土) 21:49:12 ID:fqNr3t6F0]
- Cocoaで書けばAppstoreで金儲け
- 23 名前:名称未設定 mailto:sage [2009/01/18(日) 03:27:46 ID:qnipeswc0]
- 日本のエロゲー文化が世界に進出する瞬間だな。
- 24 名前:名称未設定 mailto:sage [2009/01/18(日) 04:06:37 ID:0BtTldEf0]
- >>22,23
エロが入るかどうかは知らんが MOONSTONEがiPod touch/iPhone版Giftを開発中らしい。 が、去年の最初の発表以降情報がないようで(´・ω・`)
- 25 名前:名称未設定 mailto:sage [2009/01/18(日) 04:27:33 ID:9Du8SxzA0]
- あなたの時は止まったままですか?
とっくに出てるみたいだけど>Gift
- 26 名前:名称未設定 mailto:sage [2009/01/18(日) 04:43:16 ID:qnipeswc0]
- www.moon-stone.jp/index2.html
2009.01.13 Gift iPhone/iPod touch版発売!!
- 27 名前:名称未設定 mailto:sage [2009/01/18(日) 07:56:36 ID:0BtTldEf0]
- >>25,26
なんと! MOONSTONEは積極的だな。 そのうち冗談抜きでMac版が来そうだw でもその前にGiftの製品ページ更新しようよ(´・ω・`)
- 28 名前:名称未設定 [2009/01/18(日) 10:45:01 ID:tC3ieAbi0]
- iPhoneアプリをマックアプリに移植なんて簡単でしょ
- 29 名前:名称未設定 mailto:sage [2009/01/18(日) 11:20:11 ID:b8XPQbTx0]
- なら、Macに移植する仕事すれば儲かるんじゃね?
- 30 名前:名称未設定 [2009/01/18(日) 11:23:24 ID:tC3ieAbi0]
- アップルがMacAppStoreを始めればいいのに
- 31 名前:名称未設定 mailto:sage [2009/01/18(日) 11:29:39 ID:630p3L3w0]
- 携帯以外のプラットフォームで
ぽっと出の会社が出しても赤字にならないソフトって そもそもあるか?
- 32 名前:名称未設定 mailto:sage [2009/01/18(日) 11:31:46 ID:BqFofErM0]
- MoonStoneなんて、25年待ったって出やしねぇよ!
- 33 名前:名称未設定 mailto:sage [2009/01/18(日) 12:40:30 ID:x/r4yEXa0]
- なぜ25年なのか気になる
- 34 名前:名称未設定 mailto:sage [2009/01/18(日) 13:35:55 ID:pcVVaY0/0]
- 石の上にも25年
- 35 名前:名称未設定 mailto:sage [2009/01/18(日) 15:07:01 ID:lpSD9VBZ0]
- XcodeでVisual Studioみたいに例外が投げられた時点で自動的にブレークするにはどうしたらいいですか?
- 36 名前:名称未設定 mailto:sage [2009/01/18(日) 15:25:57 ID:lfTHOEWB0]
- スルー&キャッチ
- 37 名前:名称未設定 mailto:sage [2009/01/18(日) 15:39:47 ID:lpSD9VBZ0]
- スルーじゃなくてスローですよね。
でもそれだと、どこから飛んできたかが分からないのですが。
- 38 名前:名称未設定 mailto:sage [2009/01/18(日) 15:40:51 ID:qnipeswc0]
- スローで投げるオブジェクトで区別したら良いじゃん。
- 39 名前:名称未設定 mailto:sage [2009/01/18(日) 15:57:46 ID:lpSD9VBZ0]
- それって大きなプログラムのどこで飛ばしているか、誰が飛ばしているか(自分が発行していない場合もあり得る)
が、分からない状態だと手当たり次第にprintfを挟むのと大して違いがないと思うのですが。 質問の答えとしては「自動的にはブレークできない」ということなんですかね。
- 40 名前:名称未設定 mailto:sage [2009/01/18(日) 16:03:34 ID:qnipeswc0]
- スローしたら自動的にキャッチに飛ぶわけだから・・・
キャッチがループ外にあれば、自動的にブレイクするでしょ。 まぁキャッチそのものの定義がループ内にあったらブレイクしないけどね。 明示的にブレイクする必要はある。
- 41 名前:名称未設定 mailto:sage [2009/01/18(日) 16:10:41 ID:qnipeswc0]
- 40だけど、自分で言っててなんだけど、
キャッチをループ内に定義するなんてありえないよね・・・・?やるの? それにどこから飛んできたか分からないっていうなら dictionaryを放り投げれば良いじゃん。 キーでどこから投げたのかとかいろいろ情報を区別できるんだから。
- 42 名前:名称未設定 mailto:sage [2009/01/18(日) 16:17:18 ID:lpSD9VBZ0]
- んーと、イベントとか読み書きとか不確定要素が多くて
どこで起きてるか、何が飛んでくるか分からない場合に 少ない手順で発生源を知る方法はないという事ですよね? 極端な話、存在しうる全ての例外を知っていたところで main() { try{ func(); }catch(e_a & e){ }catch(e_b & e){ }catch(e_c & e){ ... ... ... } } って全部羅列してられないですし、補足できてもbad_allocみたいな一般的なものだったら どこで起きてるか全く分からないですし、 例外が起きる行を絞り込んでいって、その行にブレークポイントを置かないと 例外が起きている状態のコールスタックと変数は分からないわけで。
- 43 名前:名称未設定 mailto:sage [2009/01/18(日) 16:20:18 ID:lpSD9VBZ0]
- 連投すみません。
dictionaryをどこに設置するかをどうやって決めるのですか?
- 44 名前:名称未設定 mailto:sage [2009/01/18(日) 16:30:57 ID:qnipeswc0]
-
wwwa.dcns.ne.jp/~nito/CocoaClub/article05.html 例外の生成 Objective-Cにおける例外の生成は、NSExceptionのオブジェクトにより行われます。 以下の例では、resultが-1だった時に、@"FooException"という名前を持つ例外をあげています。 - (void)foo { if (result == -1) { [[NSException exceptionWithName:@"FooException" reason:@"Result returned -1.." userInfo:nil] raise]; } } この例から類推できるように、CocoaのObjective-C環境における例外クラスはNSExceptionだけで、 Javaがさまざまなサブクラスによって例外を区別しているのとは、趣が違います。 どの例外があがったかを知るには、NSExceptionに設定された例外名などの情報を判定する必要があります。 システムであらかじめ定義された例外名には、以下のものをはじめいろいろあるので、 判定にはそれを使うこともできます。また、自分で例外名を定義する場合は、 頭に"NS"をつけるのは止めましょう。
- 45 名前:名称未設定 mailto:sage [2009/01/18(日) 16:32:15 ID:qnipeswc0]
- >>42
44でuserInfoにdictionaryを設置する。
- 46 名前:名称未設定 mailto:sage [2009/01/18(日) 16:34:41 ID:qnipeswc0]
-
45は全然、43の答えではないな。 43は具体的にどういうこと?
- 47 名前:名称未設定 mailto:sage [2009/01/18(日) 16:45:28 ID:lpSD9VBZ0]
- dictionaryの設置箇所が分かっているなら既に当たりを付けた後じゃないかなと。
無論、最初から全ての箇所でdictionaryを投げるように書いておけばいいんでしょうけど。 あと、C++を使う事の方が多いので42ではbad_allocと書きましたが NSExceptionにしたってシステムが出す例外は場所の特定がしづらいですよね。
- 48 名前:名称未設定 mailto:sage [2009/01/18(日) 16:50:14 ID:qnipeswc0]
-
システム自体が出す例外ってかなり特殊ですよね・・・・。 僕もこいつらがどんな例外情報を送ってれるのかしらないけど、 nameとかresonとかだけでは特定できないのかな?
- 49 名前:名称未設定 mailto:sage [2009/01/18(日) 16:53:13 ID:xDMM8zcg0]
- 流れがよく分からんが、-[NSException raise]にブレークポイントを設定するんじゃ駄目なの?
- 50 名前:名称未設定 mailto:sage [2009/01/18(日) 16:54:18 ID:lpSD9VBZ0]
- !!
- 51 名前:名称未設定 mailto:sage [2009/01/18(日) 16:58:06 ID:qnipeswc0]
- >>49
そんなクラスメソッドなんてあったけ? raiseって例外を明示的に発生させるインスタンスメソッドだよね。 + raise:format: + raise:format:arguments: どちらかと勘違いされているのですか?
- 52 名前:名称未設定 mailto:sage [2009/01/18(日) 17:01:46 ID:xDMM8zcg0]
- >>51
…シンボリックブレークポイント使ったことないのかな? (特定のクラスの)特定のメソッドが呼ばれたときにブレークするには、シンボリックブレークポイントの追加でこういう風に入力するの。 インスタンスメソッドなら-、クラスメソッドなら+。
- 53 名前:名称未設定 mailto:sage [2009/01/18(日) 17:02:08 ID:lpSD9VBZ0]
- 今更過ぎですが>>49を呼んで試してみたらNSExceptionはobjc_exception_throwを呼んでいて、
こいつは__TERMINATING_DUE_TO_UNCAUGHT_EXCEPTION__を呼んでいて、 その中でint3(ブレーク)してますね。 つ、ついでにC++で自動的にブレークする方法も分かったりしないでしょうか? スレ違いかな。
- 54 名前:名称未設定 mailto:sage [2009/01/18(日) 17:06:52 ID:lpSD9VBZ0]
- メニューの[実行]->[ブレークポイントを管理]->[C++ 例外のブレークポイントを追加]ダイアログで
[すべての例外]というチェックボックスがありました。 大変お騒がせし、スレを汚してしまい申し訳ありませんでした。 でもこの一連の流れのおかげでNSExceptionとXcodeの理解が深まりました。
- 55 名前:名称未設定 mailto:sage [2009/01/18(日) 17:12:01 ID:qnipeswc0]
- >>52
へぇー、今度試してみます。 cocoa referenceで breakはインスタンスメソッドで例外にジャンプするってあったから なんでクラスに対してメッセージを送信するんだろうって思いました。 それならクラスメソッドの以下のメソッドじゃないのかって・・・・。
- 56 名前:名称未設定 mailto:sage [2009/01/18(日) 17:14:07 ID:qnipeswc0]
- 55、breakじゃなくてraiseですね。
これクラスにいっぺん送ってみます・・・・。 質問主さんは解決されたみたいだけど、僕は?????状態っす。
- 57 名前:名称未設定 mailto:sage [2009/01/18(日) 17:32:11 ID:xDMM8zcg0]
- >>55,56
あ、いやこれメソッドの実行じゃないのよ。 特定の関数とか特定のメソッドを呼び出したところでブレークするために、 自分で書いたソースコードの行とかじゃなくて、関数名やメソッド名そのものをブレークポイントとして使うの。 「実行」>「ブレークポイントを管理」>「シンボリックブレークポイントを追加」して、ダイアログに入れる内容が>>49。 デバッガとしては多分そのメソッドの名前、クラス、クラスメソッドかインスタンスメソッドかどうか、の情報があればいい。 それを指定するための文法が>>49みたいになってるってだけで、Obj-Cの文法とは別。 ていうかXcodeのマニュアルちゃんと読もうぜ皆。
- 58 名前:名称未設定 mailto:sage [2009/01/18(日) 17:49:23 ID:qnipeswc0]
- >>57さん、ありがとう。
そうなのか。 結構ブレイクポイント使用するけど、そこまで考えたこと無いわ。 で、その回答で質問主さんが解決された意図がわかりました。 デバック目的で例外処理を利用しようとしていたんですね。? それで、スローで投げてきても「発生源がわからない」、これなんとかならんのか? 42のように細かく書かんといかんのか?ってことになっていって で、>>49で「いやブレークポイントを設定すれば、エラー発生時にどこでエラー発生しているか わかるでしょって」ことで >>50で解決したのか・・・・・・・・・・・・・・・・。 そうですよね?
- 59 名前:名称未設定 mailto:sage [2009/01/18(日) 18:03:01 ID:lpSD9VBZ0]
- いえ、多分最初の理解で合ってるんじゃないかと思います。
デバッグのために今から例外投げるプログラムを書くのであれば printfを挟むのに感覚が近いですがそうではなくて、 もともとあるプログラムのどこからか例外が投げられた時に そこで止まってくれないかな、というのが元々の発想です。 で、NSExceptionは特別な事をしなくても勝手に止まってくれるようになっていましたので 多分-[NSException raise]をブレークポイントに追加しなくてもいいはずです。 C++は>>54をONにする事で勝手に止まるように出来ました。
- 60 名前:名称未設定 mailto:sage [2009/01/18(日) 18:05:06 ID:lpSD9VBZ0]
- >>58が発生源が分からないエラーの発生場所を特定するという理解
をしていただいたのであれば、その通りです。
- 61 名前:名称未設定 mailto:sage [2009/01/18(日) 18:13:17 ID:ZuNSxY880]
- なんだこのグダグダな流れ...
>>57 >ていうかXcodeのマニュアルちゃんと読もうぜ皆。 そういう自分も Leopard 上のマニュアル(リリースノート)を読んだ方がいいな。 Leopard を使ってないなら仕方ないかもしれんが。
- 62 名前:名称未設定 mailto:sage [2009/01/18(日) 18:46:39 ID:xDMM8zcg0]
- >>61
-[NSException raise]だと@throwで投げた例外はキャッチされないからobjc_exception_throw使えってことか。 サンクス。
- 63 名前:名称未設定 mailto:sage [2009/01/18(日) 20:30:54 ID:kMPqyzsk0]
- 久しぶりにCocoaを触ってCoreDataとか新しく追加されたAppkitとか触ったら
昔何日も徹夜して作ったようなものがコード一行もなしに動いて 秋葉原で涙する元KGBスパイみたいな気分になった。
- 64 名前:名称未設定 mailto:sage [2009/01/19(月) 01:07:41 ID:QeooMR930]
- Key pathとかkey-value observing面白そうだけど何しているのかいまいちしっくりこない。
これあえて自分で使う事ってあるのかな?
- 65 名前:名称未設定 mailto:sage [2009/01/19(月) 01:22:16 ID:WxEnXMt70]
- 同じようなことを実現するだけなら自前でももっと簡単なやり方があるだろうけど
大枠をbindingで作ってる場合、細かくいじる必要がある自作クラスを key-value-coding準拠で作っておけば、全体のbindingの連携に組み込めるという話
- 66 名前:名称未設定 mailto:sage [2009/01/19(月) 01:36:07 ID:QeooMR930]
- なんとなく分かったような気がします。でも自分の書いているどんな処理をあえてそれに
当てはめた方がよいかと考えるとあまり思いつきませんけど。理解しなければCocoa プログラミングできないというものでもなさそうなのでしばらくはスルーしておいても 良さそうですね。
- 67 名前:名称未設定 [2009/01/19(月) 01:41:12 ID:9T/jZU8v0]
- bindingで一番効果が発揮するのはtableViewかな。
ぶっちゃけIBだけでコーディングできるし。 これを知ったとき、あのデータソースをつかって、 どうやって目的のセルに値を表示させることが出来るのか格闘していた自分が 惨めにおもえた。 このときの経験は、後々すごく役にたったけど。
- 68 名前:名称未設定 mailto:sage [2009/01/19(月) 01:53:58 ID:k1KJxZ8q0]
- 便利だけど確かBinding、ていうかNSArrayControllerがスレッドセーフじゃないから困ったこともあるなぁ
あと、いろいろ自動でやってくれる新しいAPIって便利だけど重いんだよなぁ
- 69 名前:名称未設定 [2009/01/19(月) 03:24:53 ID:9T/jZU8v0]
- たしかに、間に余分な物をはさむ分遅くなるしね。
- 70 名前:名称未設定 mailto:sage [2009/01/19(月) 14:52:03 ID:j0GQl9c30]
- ところでみんなNSArrayとSTL、どういう使い分けしてる?
STL一切使わずNSArrayをサブクラス化して使ってるとか参考までに色々言ってみて。
- 71 名前:名称未設定 mailto:sage [2009/01/19(月) 15:05:47 ID:TXDBp2F00]
- >>70
STLってなに?
- 72 名前:名称未設定 mailto:sage [2009/01/19(月) 15:19:02 ID:0IPPfgoR0]
- >>71
リーゼントのorz
- 73 名前:名称未設定 mailto:sage [2009/01/19(月) 15:20:17 ID:fO6WFzd+0]
- S: すばらしきかな
T: テンプレート L: ライブラリーよ!
- 74 名前:名称未設定 mailto:sage [2009/01/19(月) 15:33:20 ID:FKWl3JcY0]
- >>70
>STL一切使わずNSArrayをサブクラス化して使ってるとか参考までに色々言ってみて。 NSArray をサブクラス、とか言っている時点で Objective-C の素人さんですね。 developer.apple.com/DOCUMENTATION/Cocoa/Conceptual/CocoaFundamentals/CocoaObjects/chapter_3_section_9.html の Class Cluster の説明を読みましょう。 NSArray は配列の性質によって alloc init の結果が違うクラスになるのを 隠蔽しているので、知らずにサブクラスをするとおかしくなります。 だから機能を追加したいときはカテゴリを使います。 journal.mycom.co.jp/column/objc/032/index.html jay.tuley.name/archives/2006/03/08/Class-Clusters borkware.com/rants/agentm/collection-subclassing/ あたり参照。 Cocoa の Foundation のコレクションクラス一般の C++ 等との違いは ridiculousfish.com/blog/?p=27 が詳しい。STL と NSArray の比較もあるよ。
- 75 名前:名称未設定 mailto:sage [2009/01/19(月) 15:46:31 ID:j0GQl9c30]
- >>74
機能というより異なるインスタンス変数をそれぞれ持たせたければサブクラス化するしかないんでないの? ↓以下Aを持つArrayA Class , Bを持つArrayB Class というように。 //A typedef struct { float y; float x; float z; } float3; //B typedef struct { int vert0,vert1,vert2; } カテゴリで追加する手法ならうちもfirstObject程度はやってるけど、それだともちろんNSArrayとしか振る舞わないからね。 NeXTやってた頃はBigNumberとかExtentとかST80近似に作ってprimitiveもNSArrayに入れるようにしてたけど、今はSTLあるからね・・ みんなどう工夫してるのか知りたかったのさ。
- 76 名前:名称未設定 mailto:sage [2009/01/19(月) 15:51:26 ID:TXDBp2F00]
- >>75
NSArrayはid型のものを入れるのにしか使わないから、どうしてもそういう構造体とか基本型入れるんなら NSValue使って入れてる。この場合NSArrayのサブクラスは必要ないよね。 NSArrayを使わないんならCの配列やそのSTLとかいうので間に合うでしょ。 どっちの場合もNSArrayのサブクラスは必要ないと思うんだけど。
- 77 名前:名称未設定 mailto:sage [2009/01/19(月) 15:52:44 ID:FKWl3JcY0]
- それは失礼。こちらは日曜プログラマなので
C / C++ のオブジェクトなら STL, Obj-C のオブジェクトなら NSArray で済ませてました。 そういう純粋 struct を NSArray (もしくはそのサブクラス) にいれる利点はほとんどないんでは? 逆に id を STL にいれると retain カウントがおかしくなるのでどうしようと おもっていて、これを機にしらべてみたら lists.apple.com/archives/cocoa-dev/2008/Mar/msg01649.html なんてのがありました。賢い。
- 78 名前:名称未設定 mailto:sage [2009/01/19(月) 16:16:11 ID:j0GQl9c30]
- >>76-77
>NSArrayのサブクラスは必要ないと思うんだけど もちろん大抵はそうだよね。 ただtraverseでパフォーマンスを得なければならない場合が極稀にあるもので・・ そういう場合はid型じゃ困るんよ。 id型で済むのであればNSValueなりNSNumber、あるいはNSObjectから派生させたものを突っ込めばいいし、機能はカテゴリで増やせばいいってことなんだけどさ。 STLはvector<set<int> >とかとっても有り難いんだけど、set間の論理演算がないから書かなきゃいけないとか不満な所はそれなりにあるよ。 NSArray系は集合を扱うものがなかったと思うのでこれらもちょっと。 ま・・問題点とかというよりも普段みんなどんな使い分けをしてるか参考にしてみたい。
- 79 名前:名称未設定 mailto:sage [2009/01/19(月) 16:21:50 ID:TXDBp2F00]
- >>78
集合は普通NSArrayじゃなくてNSSetを使うよね? パフォーマンスを得たい場合には直接配列をいじればいい。使い分けつってもそれくらいしか思いつかないな。
- 80 名前:名称未設定 mailto:sage [2009/01/19(月) 16:25:01 ID:j0GQl9c30]
- >>79
NSSetがあるとは知らなかった あとでちょっと使ってみる。 ただ集合扱うのにNSArrayをset的に〜って話ではないんだよ、もちろん。
- 81 名前:名称未設定 mailto:sage [2009/01/19(月) 16:37:32 ID:Vvone4rF0]
- おれもどうしてもパフォーマンスが欲しけりゃCで書くよ。
たとえば>>75にあるようなのはCで書くし、Cocoaでもシビアなところはそうしてる。
たとえばNSFontのgetBoundingRects:forGlyphs:count:は構造体配列を渡すようになってるでしょ。
- 82 名前:名称未設定 mailto:sage [2009/01/19(月) 16:53:09 ID:0UmyVXJW0]
- NSCodingプロトコルのencodeWithCoderっていつ呼び出されるんですか?
- 83 名前:名称未設定 mailto:sage [2009/01/19(月) 16:57:56 ID:0IPPfgoR0]
- >>82
NSCoderが何をする物かを理解すれば分かると思うよ。
- 84 名前:名称未設定 mailto:sage [2009/01/19(月) 17:09:27 ID:0UmyVXJW0]
- >>83
その回答でわかりました。
- 85 名前:名称未設定 mailto:sage [2009/01/19(月) 17:16:39 ID:suWeNgYM0]
- NSNotification と KVO についての質問です。単純にある値を監視したい
とき、どっちの方が軽い処理なんでしょう?例えば単純に、Hoge の インスタンス変数 BOOL foo を監視するような場合です。 Notification 使う場合は NSNotification を作ったり、通知対象を探すのに 時間かかりそうかなぁ?と思っているので、KVOの方が軽そうな印象を 持っているのですが。詳しい方、お教えください。
- 86 名前:名称未設定 mailto:sage [2009/01/19(月) 17:47:25 ID:iFBtkqAI0]
- setterをトラップするだけだから、observingに一票。
- 87 名前:名称未設定 mailto:sage [2009/01/19(月) 19:15:14 ID:suWeNgYM0]
- >>86
あ、やっぱりそう思われます?こんな場面でパフォーマンス稼ごうという気に なっている訳ではないのですが…何か気になって(笑 どうもありがとうございました。
- 88 名前:名称未設定 mailto:sage [2009/01/19(月) 23:51:03 ID:4VVsl/ct0]
- NSMutableDictionaryのsetValueとsetObjectってどう違うのでしょうか?
自作のPGではsetValueとvalueForKey、setObjectとobjectForKeyのペアで どちらを使用してもうまく動くのですが。
- 89 名前:名称未設定 mailto:sage [2009/01/19(月) 23:57:13 ID:OBOP0rKe0]
- >>88
両方同じとリファレンスに書いてある。 以前は、setObjectとobjectForKeyしかなかったが、10.3でKVCのサポートが強化されたときにsetValueとvalueForKeyが追加された。
- 90 名前:名称未設定 mailto:sage [2009/01/20(火) 00:13:33 ID:1geMWJWK0]
- >>88
>どちらを使用してもうまく動く 100%同じ挙動と思うと落とし穴あるぞ。NS(Mutable)Dictinaryのドキュメントよく読んだ方がいい度
- 91 名前:名称未設定 mailto:sage [2009/01/20(火) 01:07:44 ID:Qn/CmdU10]
- >>89
>両方同じ [hoge setObject:nil forKey:@"uge"];→例外発生 [hoge setValue:nil forKey:@"uge"];→[hoge removeObjectForKey:@"uge"];
- 92 名前:名称未設定 mailto:sage [2009/01/20(火) 09:54:55 ID:J4NUz8bNi]
- setNilValueForKey:
setValueForUndefinedKey: とかもみるといいも。
- 93 名前:名称未設定 mailto:sage [2009/01/21(水) 00:49:27 ID:em2Uj4bF0]
- >>88です。
大変良くわかりました。ありがとうございます。 nilが入る可能性がある場合はとりあえずsetValueの方が良いのですね。
- 94 名前:名称未設定 mailto:sage [2009/01/21(水) 10:27:15 ID:6tJD085I0]
- >>93
>nilが入る可能性がある場合はとりあえずsetValueの方が良いのですね。 違います。それだと値として nil を設定したい場合に setValue では、エントリが 削除されてしまうので、できないでしょ。ドキュメントではこの場合には NSNullを使え、とあります。その辺りもちゃんと理解した方が良いかと。 nil が入る可能性うんぬん、ではなくエントリを削除したい場合に、 removeObjectForKey: のつもりで setValue:nil forKey:key を使うのです。 とりあえず NSMutableDictionry を理解し、そのKVCを理解するまでは、 setObject:forKey:を使う事をお勧めします。
- 95 名前:名称未設定 mailto:sage [2009/01/21(水) 12:33:25 ID:52b1vsc70]
- なるほど、それではsetObjectを使うことにします。
- 96 名前:名称未設定 [2009/01/21(水) 16:00:24 ID:GWqklfd70]
- receiver となる instance の変数名を文字列で得てNSLogに表示したいのですが、
ivar_getName というのを使うのでしょうか? どうやるのでしょうか?
- 97 名前:名称未設定 mailto:sage [2009/01/21(水) 22:50:26 ID:tu4Rz/My0]
- >>96
やったことはないけど、objc2.0のリファレンスを見た感じでは。 Class class = [receiver class]; で、クラスオブジェクトを取得してから、 unsigned int outCount; IVar* ivars = class_copyIvarList(class, &outCount); で、インスタンス変数の配列を取得して、 char* name = ivar_getName(ivars[0]); で、C文字列形式の変数名を取得する。 といったところかな。
- 98 名前:名称未設定 mailto:sage [2009/01/21(水) 23:06:24 ID:Aw/6XBfV0]
- >>88
>>93 でもいい質問だよ。 時間あったらKeyValueCodingについても調べてみてね。いずれsetValue:forKey:、valueForKey:をがんがん使うことになると思うよ
- 99 名前:名称未設定 [2009/01/22(木) 19:14:22 ID:ZpfLBz0W0]
- reference見れば,同じことがマンマ書かれているぞ。
- 100 名前:名称未設定 mailto:sage [2009/01/22(木) 19:24:05 ID:7zOJ1PPW0]
- >>99
書いてあってもどうせ見る気ないんだろうから レスしてやるだけ無駄だと思うぞ。 リファレンスに書いてあるような事をわざわざ質問してくるような馬鹿は 放置でいいと思うんだが、みんな優しいなぁと。
|

|