1 名前:デフォルトの名無しさん [2009/04/15(水) 00:11:00 ] Objective-C(オブジェクティブ シー)はプログラミング言語の一種。C言語をベースにSmalltalk型のオブジェクト指向機能を持たせた上位互換言語。 (Wikipedia:ja.wikipedia.org/wiki/Objective-C より) Objective-C [ObjC part:3]; ttp://pc12.2ch.net/test/read.cgi/tech/1186543111/ Objective-C ttp://pc11.2ch.net/test/read.cgi/tech/1106983092/ Objective-C ttp://pc5.2ch.net/tech/kako/990/990574267.html
856 名前:デフォルトの名無しさん mailto:sage [2010/04/02(金) 15:27:23 ] >>855 ? いや、 - (void)hoge { [self notImplemented: _cmd]; } をエラー無くビルドしたいんだけど。notImplementedされてるクラスを云々じゃなくて、自分でnotImplementedしたいんだ。 今クラスクラスタ作ってるところで。
857 名前:デフォルトの名無しさん mailto:sage [2010/04/03(土) 02:16:08 ] >>856 ああすまん 自分で空の -(void)notImplemented: を定義すりゃいいんじゃね
858 名前:デフォルトの名無しさん mailto:sage [2010/04/05(月) 00:45:54 ] NSArray* array = [NSArray arrayWithObjects:@"a",@"b",@"c",NULL]; みたいな、オブジェクトをカンマで区切って複数指定できるメソッドって、 定義する側ではどう書くのでしょうか? もしや、カンマで区切って繋げると自動的に NSArray に変換してくれたり しているんでしょうか??
859 名前:デフォルトの名無しさん mailto:sage [2010/04/05(月) 01:45:11 ] 可変長引数でググレカス。 developer.apple.com/mac/library/qa/qa2005/qa1405.html あと Foundation クラスの実装例が見てみたいなら CF や libFoundation のソースでも読んどけ。 www.google.com/codesearch/p?#_rn0kgFhkQA/redir/sope/55519/url_tgz/sope-4.5.4-nevermind-r878.tar.gz|EGqseItem4o/sope/libFoundation/Foundation/NSArray.m
860 名前:デフォルトの名無しさん mailto:sage [2010/04/05(月) 02:30:46 ] 先生、「可変長引数」という単語を知らない人はどうなりますか…。 という冗談は置いておきまして、ありがとうございました。 ただ、可変長引数という単語で検索してもほとんどきちんと解説している サイトってないですね…。「va_list」とか「va_start」とか一体何者なのか 分かりませんし…。まぁとにかくそのあたりから調べてみる事にします。 ありがとうございました。
861 名前:デフォルトの名無しさん [2010/04/05(月) 12:54:31 ] これだからゆとりは
862 名前:デフォルトの名無しさん mailto:sage [2010/04/05(月) 13:26:03 ] ダイナミック本ってどうなの
863 名前:デフォルトの名無しさん mailto:sage [2010/04/05(月) 15:20:27 ] 索引付いてないし装丁も粗いし、Webの奴読んでりゃ良いと思うよ。
864 名前:デフォルトの名無しさん mailto:sage [2010/04/06(火) 18:52:14 ] 最近のプログラマーはやった物勝ちなんだな
865 名前:デフォルトの名無しさん mailto:sage [2010/04/14(水) 14:39:34 ] objc2 runtime 関数 const char *class_getIvarLayout(Class cls); について質問です。 この layout というのは、どういうものなのでしょうか? ソースコードを調べていくと、objc-runtime-new.h に class_t 構造体->class_rw_t 構造体->class_ro_t 構造体->uint8_t *ivarLayout となっていて uint8_t*型だとわかりましたが、何の値を示すものなのでしょう? よろしくお願いします。
866 名前:865 mailto:sage [2010/04/14(水) 15:44:41 ] 解決には至っていませんが… objc-layout.m に GC につかうもの、っぽいことが 書いてあります。が、いまいちどうなっているのかよく分からないので、 ご存知の方がいらしたら、ご教示お願いいたします。 /********************************************************************** * Object Layouts. * * Layouts are used by the garbage collector to identify references from * the object to other objects. * * Layout information is in the form of a '¥0' terminated byte string. * Each byte contains a word skip count in the high nibble and a * consecutive references count in the low nibble. Counts that exceed 15 are * continued in the succeeding byte with a zero in the opposite nibble. * Objects that should be scanned conservatively will have a NULL layout. * Objects that have no references have a empty byte string. * * Example; * * For a class with pointers at offsets 4,12, 16, 32-128 * the layout is { 0x11, 0x12, 0x3f, 0x0a, 0x00 } or * skip 1 - 1 reference (4) * skip 1 - 2 references (12, 16) * skip 3 - 15 references (32-88) * no skip - 10 references (92-128) * end * **********************************************************************/
867 名前:デフォルトの名無しさん mailto:sage [2010/04/14(水) 22:29:58 ] コメントを読んだ感じだと、 あるオブジェクトが他のオブジェクトを参照するのに使っているポインタ領域が どのオフセット位置にあるのかを表しているように読める。 例として書いてある { 0x11, 0x12, 0x34, 0x0a, 0x00 } だと、 各々の上位ニブル(= 4 ビット)分スキップしてと下位ニブル分だけワードを読むことになっているので、 まず、 0x11 で 1 ワードスキップして 1 ワード見る 次に 0x12 で 1 ワードスキップして 2 ワード 0x3f で 3 ワードスキップして 0xf = 15 ワード 0x0a で現在のワードから(= 0 ワードスキップ)10 ワード見る。 0x00 = '¥0' で終端。 1 word = 4 byte = 32 bit で、オフセットが 4, 12, 16, 32-128 の位置のワードが表されている。 このメモリレイアウトに従ってメモリ領域を見ればオブジェクトの参照関係がわかる。 という感じかなあ。 Ivar は Instance Variable の略じゃないかと。 GC については最近出た本を参照。
868 名前:865 mailto:sage [2010/04/15(木) 20:40:07 ] >>867 「ニブルの上位下位」のところがよく分からなかったんですが、なるほど、 そういう意味だったんですね。分からなかった「ニブル」の意味も何となく 分かりました。ありがとうございます。 もう一つお教えください。GC についてですが、最近新しい本が出たのでしょうか?
869 名前:デフォルトの名無しさん mailto:sage [2010/04/15(木) 20:56:05 ] > 868 byte : 8 bit nibble: 4 bit これはbyte -> bite (かじる)にひっかけて 「ちょこっとかじる」という意味のnibbleをbyteの半分を 指す様になった。 ほとんど冗談の様なネーミング。
870 名前:デフォルトの名無しさん mailto:sage [2010/04/15(木) 21:06:47 ] じゃあニブルはニップルをかじってるのか
871 名前:デフォルトの名無しさん mailto:sage [2010/04/15(木) 21:06:49 ] 英語版のwikipediaによると、bite->byteにひっかけて nybbleとスペルしたり、かならずしも4bitではなくて 5bitや6bitに使われた場合もあったそうだ。 また、 用語の起源はIBMのメインフレームらしい。 en.wikipedia.org/wiki/Nibble
872 名前:デフォルトの名無しさん mailto:sage [2010/04/15(木) 21:09:17 ] byte -> bite じゃなくて bite -> byte だよね bite が byte の語源
873 名前:デフォルトの名無しさん mailto:sage [2010/04/15(木) 21:13:07 ] 継手のニップルってそのまま形から来てるのか
874 名前:865 mailto:sage [2010/04/15(木) 21:14:47 ] >>869 レスありがとうございます。 その話、何かで見たことがありました!完全に忘れていましたが・・・ おかげでもう忘れない気がします(笑)
875 名前:865 mailto:sage [2010/04/15(木) 21:16:46 ] あれ、書いてるうちに… みなさん、ありがとう。
876 名前:デフォルトの名無しさん mailto:sage [2010/04/15(木) 23:49:00 ] >>868 GC の本っていうのは ttp://www.amazon.co.jp/dp/4798025623 のこと オブジェクトの参照関係が GC でどう使われるかに興味があるんだったら 読んでみるといいかもしれない ところで byte = 8bit じゃない計算機もあったよね そのために 8bit を明示するときは octet と言ったり
877 名前:デフォルトの名無しさん mailto:sage [2010/04/16(金) 13:30:37 ] ちくびと聞いて
878 名前:デフォルトの名無しさん mailto:sage [2010/04/18(日) 13:04:34 ] +(void)hoge; じゃなくて +hoge; って宣言を見かけたんだが、これはなんだ?
879 名前:デフォルトの名無しさん mailto:sage [2010/04/18(日) 13:16:13 ] int hoge;
880 名前:デフォルトの名無しさん mailto:sage [2010/04/18(日) 15:17:16 ] + (id)hoge; だよ。
881 名前:デフォルトの名無しさん mailto:sage [2010/04/18(日) 21:32:43 ] hage
882 名前:865 mailto:sage [2010/04/19(月) 09:30:11 ] >>876 カメレスでごめんなさい。本の情報ありがとうございます、手に入れて読んでみます。
883 名前:デフォルトの名無しさん mailto:sage [2010/04/24(土) 22:04:45 ] @interface MyObject : NSObject + (void)hoge; - (void)piyo; @end @implementation MyObject + (void)hoge { NSLog(@"hoge");} - (void)piyo { NSLog(@"piyo");} @end @interface MyMyObject : MyObject @end @implementation MyMyObject + (void)hoge { NSLog(@"hogehoge");} - (void)piyo { NSLog(@"piyopiyo");} @end @interface MyMyMyObject : MyMyObject @end となってて、MyMyMyObject で祖父クラスのメソッドを呼ぶ時って、 @implementation MyMyMyObject クラスメソッドの場合はコレで良いとして、 + (void)hoge { [[[self superclass] superclass] hoge]; } インスタンスメソッドの場合は、IMP取得くらいしかないのかね? - (void)piyo { IMP imp = class_getMethodImplementation([[self superclass] superclass], _cmd); (*imp)(self, _cmd); } @end supersuper とか無いし。
884 名前:デフォルトの名無しさん mailto:sage [2010/04/26(月) 10:24:01 ] >>883 親でover-rideされてるにも関わらず祖父を直接見るなんて、そもそもの設計が大間違いなのでは? と Obj-C 初心者が言ってみる。
885 名前:デフォルトの名無しさん mailto:sage [2010/04/26(月) 10:40:05 ] メッセージングでやる場合。 - (void) piyo { struct objc_super superSuper = {self, [[self superclass] superclass]}; objc_msgSendSuper(&superSuper, _cmd); } あとは、class_replaceMthod 等でメソッド入れ替えなども可。
886 名前:デフォルトの名無しさん mailto:sage [2010/04/26(月) 12:46:27 ] [[self superclass] superclass]とかやると、 MyMyMyObjectのさらにサブクラスを作ったときにハマるな。
887 名前:デフォルトの名無しさん mailto:sage [2010/04/26(月) 16:42:25 ] [self superclass] == [super superclass] であることを知って驚いた14の春
888 名前:デフォルトの名無しさん [2010/05/01(土) 11:17:15 ]
889 名前:デフォルトの名無しさん mailto:sage [2010/05/01(土) 11:55:50 ] >>887 ほんとだ。なんでこうなるの?
890 名前:デフォルトの名無しさん [2010/05/01(土) 20:43:49 ] superclassメソッドをサブクラスでオーバーライドしないかぎり、[self superclass]とやっても、[super superclass]とやっても、呼び出されるメソッドは同じ。 さらに、[self superclass]も[super superclass]も、レシーバーはselfになる。 詳しくは、Objective-Cのruntime APIを見てください。
891 名前: [―{}@{}@{}-] デフォルトの名無しさん mailto:sage [2010/05/06(木) 17:31:55 ] >>883 祖父クラスが基本的なメソッドを提供していて、子クラスでオーバーライドしたんだけど 孫からも基本的な処理へのアクセスが必要だというような場合は祖父クラスで hoge を basicHoge として別名でも提供しておくという Smalltalk 流の作法で済ませられない?
892 名前:デフォルトの名無しさん mailto:sage [2010/05/09(日) 00:40:25 ] スレ違いかもしれませんが質問ですm(_ _)m NSData型の変数に4バイト、例えば 0x00 0x00 0x00 0x7F と入ってる場合、これをInt型の127に変換するには どうすればいいのでしょうか?
893 名前:デフォルトの名無しさん mailto:sage [2010/05/09(日) 01:37:17 ] int a = CFSwapInt16(*(SInt32*)[data byte]);
894 名前:デフォルトの名無しさん mailto:sage [2010/05/09(日) 01:39:00 ] ミスった
895 名前:892 mailto:sage [2010/05/09(日) 12:02:34 ] 回答&ヒントありがとうございます。 int a = CFSwapInt32HostToLittle(*(SInt32*)[data bytes]); で、まだ意味はぼんやりとしか分かってないですが、 無事期待の動作が得られました。
896 名前:デフォルトの名無しさん [2010/05/18(火) 10:45:41 ] 質問です。iPhone用プログラムを書いていますが。 NSInteger index = random() % count; NSInteger index2 = random() % count; while(index2 == index) {//同じにならないように NSInteger index2 = random() % count; } とやって、二種類のランダムな数字を発生させようとしていますが、 何度かランダム数を発生させるとプログラムがストップしてしまいます。 なにがいけないのでしょうか。どなたかご教授願います。
897 名前:デフォルトの名無しさん mailto:sage [2010/05/18(火) 10:55:35 ] NSInteger index = random() % count; NSInteger index2 = random() % count; while(index2 == index) {//同じにならないように NSInteger index2 = random() % count; // このindex2と前のindex2は別物 } 一つ目のindex2と二つ目のindex2は別物です。 while(index2 == index) {//同じにならないように index2 = random() % count; // 宣言しない } としてください。 // 変数が隠されてしまっている とか警告出ませんでした? // 変数スコープとかその辺の話も調べてね
898 名前:デフォルトの名無しさん mailto:sage [2010/05/18(火) 10:55:36 ] 日本の未来が心配です。
899 名前:デフォルトの名無しさん mailto:sage [2010/05/18(火) 11:06:39 ] あまりにもあんまりな問いで最初何が駄目なのかわからなかった
900 名前:896 mailto:sage [2010/05/18(火) 11:35:51 ] >>897 うぉぉ、当たり前ですよね。コピペしてたのが間違いでした。 ホントにあんまりな質問に回答して頂き、ありがとうございました。感謝感激です。 あ〜恥ずかしい。
901 名前:デフォルトの名無しさん [2010/05/18(火) 14:20:24 ] すみません、質問させてください。 iPhone用アプリのプログラムを最近始めた初心者です。 <質問> iPhoneから外部DB(postgreSQL)に接続する手法がわかりません。 色々調べましたがピンと来なかったのですが、Object-Cから直接DBConnect するような方法は無いのでしょうか? XCode自体、初心者なのでよくわからないのですが、 1. Ruby?を利用する 2. java+JDBCを利用する のような感じになるのでしょうか。 ヒントだけでも教えていただけたら助かります。 宜しくお願い致します。
902 名前:デフォルトの名無しさん mailto:sage [2010/05/18(火) 14:46:11 ] ググレカス
903 名前:デフォルトの名無しさん mailto:sage [2010/05/18(火) 15:11:38 ] この質問前どっかで見た気がする
904 名前:デフォルトの名無しさん [2010/05/18(火) 17:10:02 ] 質問です。 UIScrollViewで画面より大きい画像を表示しているとき、画面に写っているのは、 ScrollView上でどの位置(座標)なのかを取得するにはどうしたら良いでしょう? 検索をしても、タッチした座標の検出しかわかりませんでした。 よろしくお願いします。
905 名前:デフォルトの名無しさん mailto:sage [2010/05/18(火) 17:31:23 ] スレチ。
906 名前:デフォルトの名無しさん [2010/05/21(金) 15:12:54 ] 基本的なことなのですが、いろいろ調べてもわからなかったので質問させてください。 あるファイル(A.m)から、別のファイル(B.m)のクラス( -(void)test{...} )にアクセス するにはどうしたら良いのでしょうか? B.hをA.mにimportして、A.m内で[self test]とやってみましたが、警告が出てうまく ビルドできませんでした。 低レベルな質問ではありますが、よろしくお願いします。
907 名前:デフォルトの名無しさん mailto:sage [2010/05/21(金) 15:35:06 ] >>906 自分も初心者だけど、A.m内でBのインスタンスを作ってないんじゃ? A.m内で[self test]ってしても、selfはAのインスタンス自身を参照するよ。 testメソッド(objCはメッセージだっけ?)を持っているのがBのインスタンスだからできないんじゃないかな。
908 名前:906 mailto:sage [2010/05/21(金) 15:47:12 ] >>907 ありがとうございます。できました。 今まで何となく使ってた、selfの意味をようやく理解しました。
909 名前:デフォルトの名無しさん mailto:sage [2010/05/24(月) 23:47:32 ] NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; @try { ここで例外発生。 } @catch (NSException * e) { NSLog(@"%@ @catch in %@", e, NSStringFromSelector(_cmd)); @throw; } @finally { [pool release]; } で、上位のレベルで例外を受ける時、例外は pool に登録されるせいで、@finally 中の [pool release]; で解放されちゃって、 上位のレベルで例外を触るとバッド・アクセスになる。 例外発生時に pool がメモリリークするから @finally に入れたのだが、逆にこんな問題が出てくるとは。 NSAutoreleasePool を作らないという選択肢以外に、何かリークしない上手い対処法無いかな? @throw; しないで、上位には NSError で渡すとか考えてるけど。 例外処理とか今まで殆ど触ったこと無いから、勝手が分からない。
910 名前:デフォルトの名無しさん mailto:sage [2010/05/25(火) 00:07:47 ] >>909 例外処理に悩むならException Programming Topics for Cocoa くらいは嫁。その中の Exception Handling and Memory Managementに、まさしく あなたが悩んでいることについて書いてある。ピックアップすると The simplest is to refrain from releasing local autorelease pools in @finally blocks もっとも簡単な方法はfinalyブロックでローカルなプールを使うなってこと。
911 名前:デフォルトの名無しさん mailto:sage [2010/05/25(火) 00:18:05 ] >>910 申し訳ない。その辺の文章は全て和訳されてるとばかり。 developer.apple.com/mac/library/documentation/cocoa/conceptual/Exceptions/Tasks/HandlingExceptions.html おお、素晴らしい。savedException を使います、成る程ね。 ありがとうございました。
912 名前:910 mailto:sage [2010/05/25(火) 00:22:43 ] じゃあどこでpoolをreleaseするのか不安に思ってるかもしれないので、 追記。 Autorelease poolはスタック状のデータ構造になっていて、 最上位でないAutorelease poolが解放されると、それより上の 内側のpoolおよびそれに登録されたオブジェクトはリリースされる (Memory Management Programming Guide for Cocoa; Scope of Autorelease Pools and Implications of Nested Autorelease Pools 参照) Cocoa/Objective-Cでinitとreleaseの対応は金科玉条 (破るとすなわちメモリリーク) だけど、autorelease pool自体はinitとreleaseが厳密に対応していなくても許容される…みたい。下層のpoolがreleaseされるのが前提だけど。
913 名前:デフォルトの名無しさん mailto:sage [2010/05/25(火) 13:51:57 ] @interface MyAutoreleasePool : NSObject { NSAutoreleasePool *_pool; NSPointerArray *_buf; } - (void)throwToOuterPool:(id)obj; @end @implementation MyAutoreleasePool - (id)init { self = [super init]; if (self) { _pool = [[NSAutoreleasePool alloc] init]; _buf = [[NSPointerArray alloc] initWithOptions: NSPointerFunctionsZeroingWeakMemory]; } return self; } - (void)throwToOuterPool:(id)obj { [_buf addPointer: [obj retain]]; } - (void)dealloc { [_pool release]; for (id obj in _buf) [obj autorelease]; [_buf release]; [super dealloc]; } @end こんなん作って、@catch 中で [pool throwToOuterPool: e]; するコトにしたよ。
914 名前:デフォルトの名無しさん mailto:sage [2010/05/26(水) 20:50:57 ] Objective-Cの逆コンパイラってありますか?
915 名前:デフォルトの名無しさん mailto:sage [2010/05/26(水) 22:14:33 ] 何悪いこと企んでるんだ?
916 名前:デフォルトの名無しさん mailto:sage [2010/05/27(木) 10:14:52 ] 今月で販売が終了してしまうプリンタのドライバを逆コンパイルしたい。
917 名前:デフォルトの名無しさん mailto:sage [2010/05/27(木) 13:42:00 ] Objective-CってコンパイルしちゃうとCと区別付かないよね Objective-C特有の関数呼び出しが多数現れるけど
918 名前:デフォルトの名無しさん mailto:sage [2010/05/27(木) 18:00:29 ] ObjC で書かれたドライバなんてあるの…
919 名前:デフォルトの名無しさん mailto:sage [2010/05/27(木) 18:27:40 ] 馬鹿はレスしなくていいです
920 名前:デフォルトの名無しさん mailto:sage [2010/05/27(木) 19:56:19 ] >>917 ObjC 特有の関数呼び出しが多数現れるから、コンパイルしても C と区別付くよ。
921 名前:デフォルトの名無しさん mailto:sage [2010/05/27(木) 20:44:33 ] >>920 そうじゃなくて、>914へのヒントだよ
922 名前:デフォルトの名無しさん mailto:sage [2010/05/27(木) 20:46:36 ] ObjC のメッセージ呼び出しを解釈するデコンパイラが有っても良いと思うよ?
923 名前:デフォルトの名無しさん mailto:sage [2010/05/27(木) 22:12:38 ] code-dump.sourceforge.net/
924 名前:デフォルトの名無しさん mailto:sage [2010/06/05(土) 02:21:48 ] 今まで色々書いてきて萩原本の内容を一通り制覇したけど、「分散オブジェクト」だけは未だどう利用すればいいのか分からない。 どういう処理に使ったとか、実践的・実用的な利用例があったら教えてくれ。
925 名前:デフォルトの名無しさん mailto:sage [2010/06/05(土) 02:22:16 ] 経験談とか。
926 名前:デフォルトの名無しさん mailto:sage [2010/06/06(日) 13:32:29 ] すでにコンパイルされたiPhoneのアプリを c#のように解析することはできますか?
927 名前:デフォルトの名無しさん mailto:sage [2010/06/06(日) 14:04:48 ] >>926 >c#のように 具体的に何がしたいの?
928 名前:デフォルトの名無しさん mailto:sage [2010/06/06(日) 14:54:53 ] >>927 ソースみて参考にしたいのです 特に規約とかないようなので
929 名前:デフォルトの名無しさん mailto:sage [2010/06/06(日) 15:05:25 ] Objective-C なら結構動的に動いてる部分があるので 逆コンパイルもそれなりな形にできそうだけど いかんせん逆コンパイラが作られるほど有名な言語でもないというのが
930 名前:デフォルトの名無しさん mailto:sage [2010/06/06(日) 15:07:21 ] >>928 デコンパイルしたいってことか。 残念ながら iPhone アプリのデコンパイラは知りません。 アプリの動きを知りたいなら、Instruments でカスタム DTrace スクリプトを書くのが一番良いと思います。
931 名前:デフォルトの名無しさん mailto:sage [2010/06/06(日) 15:18:44 ] >>928 コーディング規約なら一応あるよ。 Coding Guidelines for Cocoa developer.apple.com/mac/library/documentation/Cocoa/Conceptual/CodingGuidelines/CodingGuidelines.html あと、 /Developer/Examples の中にサンプルソース(TextEditとか)が 入っているので、参考になるかもよ。
932 名前:931 mailto:sage [2010/06/06(日) 15:20:47 ] Cocoaスレと間違えた。めんご
933 名前:デフォルトの名無しさん mailto:sage [2010/06/06(日) 15:42:47 ] 規約がないってのは リバースエンジニアリングを禁止する規約がないって意味でしょ
934 名前:デフォルトの名無しさん mailto:sage [2010/06/06(日) 16:10:28 ] 見落としてるだけだろ
935 名前:デフォルトの名無しさん mailto:sage [2010/06/07(月) 22:38:46 ] いや、パクる気満々だな
936 名前:デフォルトの名無しさん [2010/06/08(火) 07:45:09 ] いえ、解析してそのゲームでチートしようと思ってます
937 名前:デフォルトの名無しさん mailto:sage [2010/06/08(火) 08:02:20 ] ageんな死ね。
938 名前:デフォルトの名無しさん mailto:sage [2010/06/09(水) 15:25:24 ] Objective-Cでは、厳密にprivateやpublicと明示的に記述し、スコープ分けしないのでしょうか? 入門書を何冊か読んだのですが、どれもインスタンス変数のスコープ分けをしていないので、気になっています。
939 名前:デフォルトの名無しさん mailto:sage [2010/06/09(水) 15:27:26 ] @interface AClass : NSObject {
940 名前:デフォルトの名無しさん mailto:sage [2010/06/09(水) 17:01:09 ] そのあたりに言及してるのは荻原本ぐらいじゃないかな
941 名前:デフォルトの名無しさん mailto:sage [2010/06/09(水) 17:26:05 ] @privateでもKVCとかでアクセスできるし プライベートであるという表明だけは出来るけど 静的チェックは甘いよね。
942 名前:デフォルトの名無しさん mailto:sage [2010/06/10(木) 10:11:59 ] >>940-941 ありがとうございます。 自分はJavaやってから始めたので、クラス内でしか使わない変数を隠蔽していないと どうも気になってしまって…。 荻原本は読みました。解説はしてるのですが、以降の章のサンプルコードでは積極的に 使ってませんよね。>>941 さんがおっしゃるように、 「スコープ分けしてもKVCでどうせアクセスできるんだから、細かい事は気にすんな」 って事なのでしょうかね。
943 名前:デフォルトの名無しさん mailto:sage [2010/06/10(木) 12:11:55 ] 表明するのは大事だよ 通常アクセスならエラーが出るし、 迂闊に触ってしまうことへの注意喚起も出来るから それで慣れている人は続ける方がいいよ Appleのやり方も色々だよね。 昔から有るクラスはコメントで「privateだ」って書いてあったり idな型不明のオブジェクトに隠蔽したり @privateで宣言したり。
944 名前:デフォルトの名無しさん mailto:sage [2010/06/10(木) 13:06:02 ] >>943 なるほど、ありがとうございます。 書いている方が安心できるので、書く事にします。 少しでも単純なバグを減らせるなら、これを書くぐらいなんとことないですしね。 id型で思い出しましたが、参考書はかなりid型を使っていますが、Objective-Cは動的型結合があるのでid型で書いた方が、何かと都合が良いのでしょうか。 「ここは絶対hoge型でしょう」みたいな箇所でid型を使うのは、Javaのような静的型付け言語に慣れ親しんでいた私の身には抵抗がありまして…。 「ごちゃごちゃ言う前に慣れろ」と言われれば、それまでなんですけど、ハイ…。
945 名前:デフォルトの名無しさん mailto:sage [2010/06/10(木) 14:24:18 ] 荻原本持ってるなら64ページに静的な型について書いてあるよ。 「明確な指針はないので好きにすれば良い」みたいなことが書いてある。 俺はクラス型を指定すると、コンパイル時に警告を出してくれるメリットがある のでどんどん使っていけば良いと思うよ。 ただ、コンパイル時には静的な型チェックを行ってくれるが、実行時にはすべて id型になっているということがJavaとは違うので注意。 id型の代わりにクラス型を指定したせいでデメリットが生まれることはあまり ないと思われる。
946 名前:デフォルトの名無しさん mailto:sage [2010/06/10(木) 14:35:23 ] >>945 ありがとうございます。書いてました。申し訳無いです。 >ただ、コンパイル時には静的な型チェックを行ってくれるが、実行時にはすべて >id型になっているということがJavaとは違うので注意。 この違いは大きいですね。注意します。ありがとうございました。
947 名前:デフォルトの名無しさん mailto:sage [2010/06/10(木) 15:10:05 ] >>943 WebViewはちょっと面白いよね。 @privateでWebViewPrivateクラスのインスタンス変数を持ってるだけだし、 WebViewPrivateクラスの実装とかはなぜかWebViewDataにある。
948 名前:デフォルトの名無しさん [2010/06/11(金) 16:03:43 ] CFIndex型の変数indexに、どんな値が入っているか見ようと思うのですが、 NSLog("%O", index); としましたが、ポインタコンパチブルなんたらと怒られました。 何が間違っているのでしょうか?と質問しようとして、 よく見たら、1つ目の引数のポインタが型違うやんみたいなことを言われました。 NSLog(@"%O", index); としたら、うまく行きました。自己解決しました。ありがとうございました。 以前にもこういうミスがありまして、こういうミス起きないようにするには どうすればよいでしょうか。変な質問ですがよろしくお願いします。
949 名前:デフォルトの名無しさん mailto:sage [2010/06/11(金) 16:50:47 ] 文字列の前には@を付けると頭に叩き込むしかないんじゃないかな。
950 名前:デフォルトの名無しさん mailto:sage [2010/06/11(金) 20:30:49 ] >>948 一度遭遇したエラーや警告を、その原因、対処方法とともに意識して憶えていく努力をする。
951 名前:デフォルトの名無しさん mailto:sage [2010/06/11(金) 20:37:59 ] 次に948は、 CFIndex型の変数indexに、どんな値が入っているか見ようと思うのですが、 printf(@"%O\n", index); としましたが(ry
952 名前:948 [2010/06/12(土) 14:48:06 ] みなさんアドバイスありがとうございます。 >>949 「あっと驚くNSString」これで頭に叩き込もうと思います。 頭に叩き込んでいたら怪我をしてしまいまして、これから病院に行ってきます。 >>950 そうですよね。がんばります。 >>951 次は無いようにしたいですね。 そこで新たな質問ですが、 NSLog(@@"%O", index); のところでエラーが出ます。 原因はなんでしょうか?
953 名前:デフォルトの名無しさん mailto:sage [2010/06/12(土) 14:56:21 ] バカかお前は。
954 名前:デフォルトの名無しさん mailto:sage [2010/06/12(土) 23:08:40 ] バカの相手するのもなんなんだが、log って打って補完すれば NSLog(@""); って補完してくれて "" の中にキャレット動かしてくれるぞ
955 名前:デフォルトの名無しさん mailto:sage [2010/06/13(日) 06:40:53 ] >log って打って補完すれば NSLog(@""); 俺、べつのバカだけど、そうなんだ!べんりだなー
956 名前:デフォルトの名無しさん mailto:sage [2010/06/17(木) 23:18:32 ] すみません 非常に初歩的で申し訳ないんですが、iphone ipadのプログラムがしたいと思い、windowsに>>15 の www.gnu.org/software/gnustep/experience/Windows.html の通りインストールしたんですが、shellのコマンドがわかりません というかみなさんMACでやってるんですか? iphone ipad の用プログラミングでvisual C++みたいなのありませんか?
957 名前:デフォルトの名無しさん mailto:sage [2010/06/17(木) 23:21:02 ] スレチ。というか Mac も持ってないのにコード書いても意味ないだろ。
958 名前:デフォルトの名無しさん mailto:sage [2010/06/17(木) 23:30:07 ] >>957 そうなんですか 初級過ぎてすみません>< アップル公式のSDKもよく見たらMAC限定みたいですね 出直してきます
959 名前:デフォルトの名無しさん mailto:sage [2010/06/17(木) 23:44:33 ] ちょっとわらった
960 名前:デフォルトの名無しさん mailto:sage [2010/06/18(金) 09:45:40 ] ttp://code.google.com/p/json-framework/wiki/InstallationInstructions ここのOption 3を見ながらJSON-Frameworkを使ってMacアプリでテストを行おうとしているのですが、うまくいかずに困ってます。 フレームワークをプロジェクトに追加したので、3.までは終わってると思うのですが、 4の意味がわかりません。これは何をすれば良いのでしょうか?
961 名前:デフォルトの名無しさん mailto:sage [2010/06/18(金) 10:31:17 ] >>960 サイドバーの 「ターゲット」を展開→アプリ名になってる項目を右クリック→「追加」→「新規ビルドフェーズ」→「新規コピーファイル」 開いたパネルの「デスティネーション」を「フレームワーク」に設定 アプリ名の項目を展開→「ファイルをコピー」の上に JSON.framework をドロップ
962 名前:デフォルトの名無しさん mailto:sage [2010/06/18(金) 10:34:45 ] JSON.framework は実際のファイルではなくて サイドバーの <プロジェクト名>/Frameworks 項目の中に入ってるやつ
963 名前:デフォルトの名無しさん mailto:sage [2010/06/18(金) 11:07:33 ] >>961-962 ありがとうございます。前進できました。 ビルドすると、JSON Frameworkのいくつかのファイルが見つからないというエラーが出ましたので、 私の設定のどこかがまずいのでしょう。 頑張って潰したいと思います。
964 名前:デフォルトの名無しさん mailto:sage [2010/06/21(月) 18:46:22 ] 楽しいココアのレヴューにこういう↓のあったんだが、実際のところどう? あと萩原本以外にいいのないですか?自分はCは中級くらいやれてます ********************* Leopardにアップグレードしてしまった方、 この本は使えません。Xcode Toolに大幅な変更があったからです。 まだTigerを使っている方。この本は貴方のためのものです。 本の通り作業して行けばCocoaのいろはのい位まではモノになるはずです。
965 名前:デフォルトの名無しさん mailto:sage [2010/06/21(月) 19:47:48 ] スレチ。
966 名前:964 mailto:sage [2010/06/21(月) 20:09:39 ] すみませんでした 新macのcocoaスレ行ってきます
967 名前:デフォルトの名無しさん [2010/06/24(木) 03:59:04 ] yomi.bbspink.com/test/read.cgi/ascii2d/1275848135/225 採用
968 名前:デフォルトの名無しさん mailto:sage [2010/06/27(日) 22:15:30 ] codepad.org/H3j8eTAB このコードで、どのNSLogも出力されないんだが何か間違ってる? これじゃNSOperationQueueを使う意味がないのは承知の上。
969 名前:968 mailto:sage [2010/06/28(月) 17:59:49 ] Appleで聞いてくる
970 名前:デフォルトの名無しさん [2010/06/29(火) 18:10:59 ] V V (´・ω・`) うさちゃんピース
971 名前:デフォルトの名無しさん [2010/07/02(金) 05:44:56 ] すみません。 1ヶ月未満の初心者なんですが、初歩的なことでつまずいています。 ヘッダファイルで @interface PListReadViewController : UIViewController { NSArray* persons; } @property(nonatomic,retain) NSArray* persons; で、ソースファイルで @synthesize persons; -(void)hogehage{ NSBundle* bundle = [NSBundle mainBundle]; NSString* path = [bundle pathForResource:@"test" ofType:@"plist"]; NSArray* persons = [NSArray arrayWithContentsOfFile:path]; } としてるんですが、hogehageのpersonsはローカル変数として扱われてしまうみたいですね。 interfaceで定義してるpersonsに、パッケージにバンドルされてるplistを配列として展開して、 別の関数内でpersonsを使いたいんですけど、どうしたらいいんでしょうか?
972 名前:971 mailto:sage [2010/07/02(金) 06:11:49 ] できました! ttp://www15.plala.or.jp/NovemberKou/programming/2ndGeneration/2ndHome/RMGWindowController/fixCrashDnD.html を参考にしました。 NSArrayの使用サンプルはみんな、1関数内で処理が終了してるものばかりで、なかなか見つかりませんでした。 おじゃましました。
973 名前:デフォルトの名無しさん mailto:sage [2010/07/02(金) 18:57:59 ] [NSHoge hoge~~] ってのは自動で autorelease に登録されてると覚えよう。
974 名前:デフォルトの名無しさん mailto:sage [2010/07/02(金) 20:38:07 ] とは限らないけどね