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
528 名前:デフォルトの名無しさん mailto:sage [2009/11/11(水) 17:47:21 ] 冷たいな(´・ω・`) ObjCスレなんだから、もっと激しく愛を語ってもいいじゃないか。
529 名前:デフォルトの名無しさん mailto:sage [2009/11/11(水) 18:58:09 ] 今更30年前に Smalltalk で実現されていたものについてだけ語られても反応に困る .mm で boost:python と混ぜて使うのが最強ですよとかモダンな話をしようよ
530 名前:デフォルトの名無しさん mailto:sage [2009/11/11(水) 19:30:20 ] じゃあ追加して欲しい言語仕様の話でも
531 名前:デフォルトの名無しさん mailto:sage [2009/11/11(水) 22:00:46 ] [hoge method1] でマルチスレッドになりますか?
532 名前:デフォルトの名無しさん mailto:sage [2009/11/11(水) 22:01:49 ] 最近 object_getInstanceVariable とかを知って悶絶しそうな程展望が開いて小躍りしてます。
533 名前:デフォルトの名無しさん [2009/11/11(水) 22:50:59 ] >>531 なりません
534 名前:デフォルトの名無しさん mailto:sage [2009/11/11(水) 23:17:52 ] >>532 reflection つきの オブジェクト指向言語なら出来て当たり前だろう >>531 [hoge performSelectorInBackground:@selector(method1) withObject:nil] でオッケー
535 名前:デフォルトの名無しさん mailto:sage [2009/11/12(木) 00:38:16 ] 昔はこれだけで感動だった。 Smalltalk keys. Lisp だと apropos とか。
536 名前:デフォルトの名無しさん mailto:sage [2009/11/12(木) 05:05:03 ] >>531 goなら可能
537 名前:デフォルトの名無しさん mailto:sage [2009/11/12(木) 08:51:40 ] Smalltalk で言ったら fork メッセージだな
538 名前:デフォルトの名無しさん mailto:sage [2009/11/12(木) 10:12:27 ] oneway voidなメソッドなら別スレッドで実行されてもいいよな OSXのランタイムはそういう実装にはなってないけど
539 名前:デフォルトの名無しさん mailto:sage [2009/11/12(木) 12:00:19 ] >>538 APIが全て thread-safe な理想郷ならそれでもいいけど、 とつぜんあるメソッドが別スレッドで走られると困る事もあるよ 10.5 では NSOperation の concurrent オペレーションは メインスレッドで動いてたのに、10.6 からそれも別スレッドで 走るようになったので嵌まったのでそういうのはこわいです。
540 名前:デフォルトの名無しさん mailto:sage [2009/11/13(金) 00:28:16 ] プロパティのデフォルトアクセサは nonatomic を指定しないかぎり スレッドセーフだから多少のオーバヘッドには目をつむって自クラス内でも インスタンス変数は常にプロパティ経由で触るみたいなスタイルが今後は 主流になるのかもね
541 名前:デフォルトの名無しさん mailto:sage [2009/11/13(金) 14:03:00 ] 個々のインスタンス変数やプロパティの読み書きだけスレッドセーフにしても あんまり意味ないから、主流にはならないと思う。
542 名前:デフォルトの名無しさん mailto:sage [2009/11/19(木) 17:25:51 ] iPhoneのSDKがらみの質問もここでしてよいのかな。 本体の傾きを求めるとかそういう話だが。
543 名前:デフォルトの名無しさん mailto:sage [2009/11/19(木) 17:49:22 ] だめ。↓辺りでやれ、 [SDK]iPhoneアプリ開発初心者質問箱3[touch] pc11.2ch.net/test/read.cgi/mac/1254325417/
544 名前:542 mailto:sage [2009/11/19(木) 18:49:07 ] mac板にあったんだ、iphoneじゃなくて・・・どもです
545 名前:デフォルトの名無しさん mailto:sage [2009/11/21(土) 20:36:11 ] ブロック構文ってなんじゃらほい。
546 名前:デフォルトの名無しさん [2009/11/21(土) 20:37:49 ] www.nogawasakura.net/
547 名前:デフォルトの名無しさん [2009/11/22(日) 21:09:36 ] NSStringの文字列"0"をASCIIコード10進数の48に変換するにはどう書けば良いのでしょうか?
548 名前:547 mailto:sage [2009/11/22(日) 22:30:21 ] すいません、間違えました。 ASCIIコードの48をcharもしくはNSStringの0に変換するには どう書けば良いのでしょうか。
549 名前:デフォルトの名無しさん mailto:sage [2009/11/22(日) 22:34:08 ] なんだこのゴミは
550 名前:デフォルトの名無しさん mailto:sage [2009/11/23(月) 02:56:15 ] >>549 まあまあ。将来有望な小学生が来たのかもしれんじゃないか。 >>548 で、その48は何で表されてんのかな?
551 名前:デフォルトの名無しさん mailto:sage [2009/11/23(月) 04:40:12 ] char c[128]={0}; c[0] = 48; sprintf(c, "%c", 48); NSString *nss = [[NSString alloc] initWithFormat:@"%c", 48];
552 名前:デフォルトの名無しさん mailto:sage [2009/11/23(月) 06:05:21 ] >>551 オイコラ、char c[128]ってどういうつもりだ。これだから最近の若いもんは・・・。
553 名前:デフォルトの名無しさん [2009/11/23(月) 06:29:27 ] >>552 えっ、何かマズいっすかね・・・ 自分まだ初めて2ヶ月くらいなんです・・・
554 名前:デフォルトの名無しさん mailto:sage [2009/11/23(月) 07:34:23 ] Mac関連スレってどこも変な物言いのおっさんばっかりなんだよな
555 名前:デフォルトの名無しさん mailto:sage [2009/11/23(月) 08:34:48 ] >>553 >>551 の2行目のようにchar型のデータが欲しいだけなら何もすることは無いので char c; c = 48; で十分だ。 もし3行目のように文字列として扱いたい場合でも今の場合なら一文字目 '0' == 48 と二文字目の '\0' の分だけなので char c[2]; でよい。 それにchar c[2] = {0} のように書いた場合、2要素目以降は言語仕様上不定(実装上はほぼ確実に0にセットされるが)。
556 名前:デフォルトの名無しさん mailto:sage [2009/11/23(月) 08:36:27 ] なんだそんな話か char c[4096]; とか平気でやってるぞ
557 名前:デフォルトの名無しさん mailto:sage [2009/11/23(月) 09:17:42 ] なんと愚かな!
558 名前:デフォルトの名無しさん mailto:sage [2009/11/23(月) 10:41:38 ] >>555 なーるほど。そういうことなら問題なっすぃん。 なんか48 61 65 71みたいな数値を文字列に直すのかなーとか思って多めにとっただけっすぃん。
559 名前:デフォルトの名無しさん mailto:sage [2009/11/23(月) 11:04:11 ] >555 悪意がないことを先にいっておく >char c[2] = {0} のように書いた場合、2要素目以降は言語仕様上不定 なる理由はどこから 気になったので、規格書があればそのセクションをお願いします
560 名前:デフォルトの名無しさん mailto:sage [2009/11/23(月) 11:54:05 ] >>559 俺も気になったんで見たんだけど、 C99?だと、静的変数と同様の暗黙の初期化になるみたい。 それ以前のは規格書が見れない。 www.jisc.go.jp/ JISX3010のPDF96ページ辺り。
561 名前:デフォルトの名無しさん mailto:sage [2009/11/23(月) 12:36:40 ] >560 確認しました 確かに静的記憶域と同じと書いてありますね
562 名前:デフォルトの名無しさん mailto:sage [2009/11/23(月) 15:43:49 ] American National Standard Programming Language C 3.5.7 Initialization Semantics If there are fewer initializers in a list than there are members of an aggregate, the remainder of the aggregate shall be initialized implicitly the same as objects that have static storage duration.
563 名前:デフォルトの名無しさん mailto:sage [2009/11/24(火) 14:02:14 ] おまいら静的変数と同じとか遠回しなこと言ってないで、 >>555 は間違いで char c[2] = {0}の様に書いた場合 2 要素目以降は c 言語の 仕様として 0 にセットされる、とストレートに指摘しろyo
564 名前:555 mailto:sage [2009/11/25(水) 03:10:05 ] いい加減なことをいってスマンカッタ。 ヽ(`Д´)ノ ウワァァァン そんなこと言ったら厳密なObjective-Cの規格書なんて無いんだよう(グチグチ
565 名前:デフォルトの名無しさん mailto:sage [2009/11/25(水) 03:10:53 ] 往生際悪すぎ
566 名前:デフォルトの名無しさん mailto:sage [2009/11/26(木) 00:04:19 ] とはいえ、身を委ねたくはない仕様だな。 明示的に初期化しておきたい。
567 名前:デフォルトの名無しさん mailto:sage [2009/11/26(木) 00:30:36 ] 明示的に bzero() とか memset() すると冗長だと言って怒る人もいる(いた)から難しいね…
568 名前:デフォルトの名無しさん mailto:sage [2009/11/26(木) 15:41:30 ] こんな基本的な仕様を信用できないなら、ただの代入とかも信用ならんし 関数呼び出しなんて高度なものは余計使えないんじゃないか?
569 名前:デフォルトの名無しさん mailto:sage [2009/11/26(木) 18:26:21 ] コンパイラにバグがあったりするんだよ そういう経験から、冗長かどうかはともかく おまじないとして書いている処理というのはある
570 名前:デフォルトの名無しさん [2009/11/26(木) 18:28:35 ] 信用うんぬんじゃなくて、知らん人が多くて話がややこしくなるからだろ みんな知ってりゃいいが >>567 みたいな理不尽なツッコミもありそうだし、 この流れみたいに話がこじれたらかなわん
571 名前:デフォルトの名無しさん mailto:sage [2009/11/26(木) 20:48:17 ] じゃ信用できるコンパイラ先輩が作ってくださいよwwwwww ってやる夫顔で言ってやればいいんだよ
572 名前:デフォルトの名無しさん [2009/11/27(金) 10:52:05 ] クラス名からそのクラスのインスタンスを生成するにはどうするんでしょうか? クラスオブジェクトの生成は結構見つかるんですけど、 Class cls = NSClassFromString(@"anyClassName"); クラスのインスタンス自体を生成するやり方を教えてください。 出来ない言語もあるけど、objective-cはいかにも出来そうですよね? お願いします
573 名前:デフォルトの名無しさん mailto:sage [2009/11/27(金) 10:54:21 ] そこまで来てればあとはコンドーム一枚だぞ
574 名前:572 [2009/11/27(金) 11:05:28 ] >>573 あれ?もしかして id obj = [[cls alloc] init]; でいいんですか? NSLogでのぞくと出来てるっぽいです。 class_createInstanceというのも見つけたけど上ので良いのかな。
575 名前:デフォルトの名無しさん mailto:sage [2009/11/27(金) 13:05:20 ] いいんです。
576 名前:デフォルトの名無しさん mailto:sage [2009/11/27(金) 13:57:42 ] こんなのも Class class = NSClassFromString(@"AnClass"); SEL sel = NSSelectorFromString(@"aSelector"); id obj = [[[class alloc] init] autorelease]; [obj performSelector:sel]; プラグイン書くときはNSClassFromStringは便利だよね。 わざわざバンドルローダー指定する必要ないし。 NSSelectorFromStringの方はごくまれにしか使わないね。 AppleEventDispatchの実装部では使いまくってそうだけど。
577 名前:デフォルトの名無しさん mailto:sage [2009/11/27(金) 16:21:30 ] newとallocの違いが今イチ分からん。
578 名前:デフォルトの名無しさん mailto:sage [2009/11/27(金) 17:30:29 ] >>577 俺も俺も てか乳って使ったことない。
579 名前:デフォルトの名無しさん mailto:sage [2009/11/28(土) 00:03:58 ] +newは+alloc -initと同義
580 名前:デフォルトの名無しさん [2009/12/01(火) 18:38:18 ] typedef enum {a,b} defA; といった宣言をヘッダに記述し、これを他のクラスからimportして defA a; のように利用しようとすると、 "expected specifier-qualifier-list before 'c'"とエラーが 起きてしまいます。 どのように定義すれば良いのでしょうか。
581 名前:デフォルトの名無しさん mailto:sage [2009/12/01(火) 18:43:26 ] enum { a, b, }; typedef NSInteger defA;
582 名前:デフォルトの名無しさん mailto:sage [2009/12/01(火) 19:24:09 ] >>580 ソース
583 名前:580 mailto:sage [2009/12/01(火) 20:55:30 ] すいませんちょう単純な勘違いしてました。 他のヘッダが邪魔をしていて、importの前に書いたらうごきました。。
584 名前:デフォルトの名無しさん mailto:sage [2009/12/01(火) 23:11:37 ] Objective-Cって、メソッド名ひとつ考えるのにも英語力を要求してくるな。 こりゃ、そんじょそこらのなんちゃってプログラマに扱えるしろものじゃねーな。
585 名前:デフォルトの名無しさん mailto:sage [2009/12/02(水) 00:29:56 ] なんちゃってプログラマでも簡単に使えるよ。英語さえわかれば。
586 名前:デフォルトの名無しさん mailto:sage [2009/12/02(水) 00:50:29 ] >>584 別に日本語ローマ字書きでもいいじゃん
587 名前:デフォルトの名無しさん [2009/12/02(水) 04:06:03 ] 辞書が存在していない時代だったらそう言えるかもしれないね。
588 名前:デフォルトの名無しさん [2009/12/02(水) 05:26:27 ] 辞書の歴史は紙の歴史より古いからなあ。
589 名前:デフォルトの名無しさん mailto:sage [2009/12/02(水) 19:58:30 ] DataWoTuika:id KonoIchini:idx omake:option
590 名前:デフォルトの名無しさん mailto:sage [2009/12/02(水) 20:46:14 ] 引数がkonochincoとomekoに見える
591 名前:デフォルトの名無しさん mailto:sage [2009/12/02(水) 21:10:19 ] けしからん奴じゃ
592 名前:デフォルトの名無しさん [2009/12/03(木) 19:40:15 ] NSStringにHTMLのソースが入ってるんですけど、 そこから<li>〜</li>の部分だけ抜き出したいと考えています。 ただ、それをどうやって実装すればいいのかが良く分からないです・・・。 今頭の中にある感じだと、<li>とマッチする最初の場所と </li>とマッチする最後の場所を探して、その部分を抜き出すという方法なんですけど、 もっと簡単に正規表現みたいな感じでピュッと抜き出したりできないでしょうか?
593 名前:デフォルトの名無しさん mailto:sage [2009/12/03(木) 20:19:18 ] Google Toolbox for Mac の GTMRegex でも使え。
594 名前:デフォルトの名無しさん mailto:sage [2009/12/03(木) 21:59:37 ] まさかiPhone初心者スレで聞いてたやつじゃねーだろうな
595 名前:デフォルトの名無しさん mailto:sage [2009/12/03(木) 22:07:13 ] >>592 とりあえず簡単にやるならスキャナ使えば? NSString *hoge = "hoge <ol><li>foo</li><li>bar</li></ol>"; NSScaner *scanner = [NSScanner scannerWithString:hoge]; while (YES) { NSString* itemString; if (![scanner scanUpToString:@"<li>" intoString:NULL]) break; if (![scanner scanUpToString:@"</li>" intoString:&itemString]) break; NSLog(@"item = %@",itemString); }
596 名前:デフォルトの名無しさん [2009/12/04(金) 00:52:37 ] >>592 NSXML 使って XPath でピョッと
597 名前:デフォルトの名無しさん [2009/12/05(土) 22:45:14 ] なんか、releaseしなきゃならん場合としないでいい場合の違いが良くわからんわ。 本のサンプルとかみても、retainしてるのに、どこにもreleaseがなかったり、allocして autoreleaseも呼んでるのに、deallocでreleaseもしてたりとか、もうわけわかめ。 なんじゃこりゃ、そんなに神経質にならなくてもいいのか?
598 名前:デフォルトの名無しさん mailto:sage [2009/12/05(土) 23:07:44 ] カウンタ使ってメモリ管理するなら当然覚えないと、意味不明なバグに遭遇することしきり。 自分は Instruments の Leaks 使って、可視化されたメモリリークを見ながら試行錯誤して覚えたけど。
599 名前:デフォルトの名無しさん mailto:sage [2009/12/05(土) 23:09:06 ] あと初心者は Build & 解析はかなり役に立つんじゃ。
600 名前:デフォルトの名無しさん mailto:sage [2009/12/06(日) 03:36:39 ] まずは developer.apple.com/jp/documentation/cocoa/Conceptual/ObjectiveC/4objc_runtime_overview/chapter_8_section_2.html を読まんといかんよ。 iPhone じゃなくて Mac のプログラムならガーベジコレクション ON にして retain/release 忘れるという方法もあります。 ただ、 >サンプルとかみても、retainしてるのに、どこにもreleaseがなかったり、allocして >autoreleaseも呼んでるのに、deallocでreleaseもしてたりとか、もうわけわかめ。 これは本が間違ってるんじゃないの?何の本かわからんから何とも言えんが。
601 名前:デフォルトの名無しさん mailto:sage [2009/12/06(日) 06:55:11 ] >>597 そんな本あるなら晒してみろよ
602 名前:デフォルトの名無しさん mailto:sage [2009/12/06(日) 13:36:42 ] 初期化するインスタンスメソッドの他に、勝手にAutoreleaseするクラスメソッドも あったりするからちょっとややこしい。
603 名前:デフォルトの名無しさん mailto:sage [2009/12/06(日) 13:45:34 ] (あるクラスの init メソッド内で、インスタンス変数に代入するオブジェクトを)retainしてるのに、 (init 内の)どこにもreleaseがなかったり、 (そのクラスを)allocして autoreleaseも呼んでるのに、 (そのクラスの)deallocで(インスタンス変数を)releaseもしてたり と解釈するとしたら、まったく正しいコードけど
604 名前:デフォルトの名無しさん mailto:sage [2009/12/06(日) 13:53:05 ] >>601 サンプルはあくまでサンプル。アプリまるごと完全詳解みたいのならともかく。 Obj-Cに限らず、その他言語のO'Reilly本やMSDNでも、 サンプルソースと現実的に推奨されるソースは異なる場合は多い。 参照カウンタの説明でretainしたものをreleaseしてないなら問題だと思うけど、 多分、別の説明で使用されているサンプルがそうなってるんでしょ。 >>602 >勝手にAutoreleaseするクラスメソッド コンビニエンスコンストラクタのこと?
605 名前:デフォルトの名無しさん mailto:sage [2009/12/06(日) 14:10:04 ] >>604 あぁ多分それ 俺もこの辺、よく迷うわ。propertyの宣下にもretainやassignの指定があるから、 宣言をよく確かめて使わないとかいけないとか気を使うのがちょっと大変。 便乗質問なんだけど、あるクラス(A)で動的にView(B)を作って(alloc & init)、 別のView(C)にaddSubView した場合って、Aで明示的にBをreleaseする必要 があるんだっけ? それとも、Cの解放時にBも勝手にreleaseしてくれる?
606 名前:デフォルトの名無しさん mailto:sage [2009/12/06(日) 15:11:08 ] 当然あるよ。
607 名前:デフォルトの名無しさん mailto:sage [2009/12/06(日) 15:34:14 ] >>606 何が当然あるか? Aで明示的にBをreleaseする必要があるという意味あるか?
608 名前:デフォルトの名無しさん mailto:sage [2009/12/06(日) 15:47:51 ] ないあるよ
609 名前:デフォルトの名無しさん mailto:sage [2009/12/06(日) 16:09:08 ] hoge = [[Hoge alloc] init]; // 1 [foo addHoge : hoge]; // 2 … [foo release]; // 1 よってメモリリークになる。 だから、autorelease か add 後に [hoge release]; の必要がある、筈。
610 名前:デフォルトの名無しさん mailto:sage [2009/12/06(日) 16:37:49 ] わかったある。謝謝
611 名前:デフォルトの名無しさん mailto:sage [2009/12/06(日) 21:00:38 ] >>609 エ?こうしとけばリークにならねえだろ? -(void)dealloc { ... [mHoge release]; // 0 mHoge = nil; ... [super dealloc]; }
612 名前:デフォルトの名無しさん [2009/12/06(日) 21:02:19 ] そうか?
613 名前:デフォルトの名無しさん mailto:sage [2009/12/06(日) 21:17:35 ] そのdeallocは何をトリガーにして呼ばれるんだっちゅう
614 名前:デフォルトの名無しさん mailto:sage [2009/12/06(日) 22:15:11 ] >>611 だから、>>609 はそうしろって書いてるじゃん
615 名前:デフォルトの名無しさん mailto:sage [2009/12/06(日) 22:25:14 ] 自分が 609 だけど、foo が dealloc 時に hoge をリリースするのは、 addHoge: (addSubView:)には retain されてるから当然。 でもそれだと±1で、Hoge alloc init 時のカウント1をリリースされてないから、リークになる。
616 名前:デフォルトの名無しさん mailto:sage [2009/12/06(日) 22:44:59 ] まぁ、init時にautoreleaseつけとくのが無難かな
617 名前:デフォルトの名無しさん mailto:sage [2009/12/07(月) 00:14:08 ] 無難とかそういう問題ではなかろう。
618 名前:デフォルトの名無しさん mailto:sage [2009/12/07(月) 00:45:02 ] >602 >605 initほげほげ、copyほげほげ は retain されて、 それ以外のメソッドは autorelease されたのが返ってくる。 [obj method:a] としたばあいに、obj が a がずっと必要なら method 内部で retain するし、 いらなかったらそんなことはしない だから、自分があるオブジェクト a を release すべきかどうかは、 自分が呼んだメソッド内でどうなっているかとかは気にしなくてよくて、 単に自分がいらなくなった時点で release すればよい。 まあリリース足りなければメモリ食うだけだけど、 リリースしすぎは一瞬でクラッシュするので、 きちんと理解して書くか、NSZombie でチェックするか、 release しすぎないようにしてください。
619 名前:デフォルトの名無しさん mailto:sage [2009/12/07(月) 01:19:21 ] ウィーッス
620 名前:デフォルトの名無しさん mailto:sage [2009/12/07(月) 13:31:55 ] >>618 newほげほげも忘れないであげてください
621 名前:デフォルトの名無しさん mailto:sage [2009/12/07(月) 17:53:50 ] 雑談はスレチだよね。チラ裏すまん。 Objective-Cのオブジェクトの所有権ポリシーって、 (C++におけるメモリ管理と)やることは本質的に同じでありつつ 保守効率が格段に上がる優れた機構ではあるとは思うけど、 Objective-Cってどんなもんだろってちょっとイジってオナりたいとき、 一通り理解するまでとっかかりで苦労するねぇ。 C++慣れしてると、余計なお世話に感じてしまうっていうか。 なんだか好きになれない。
622 名前:デフォルトの名無しさん mailto:sage [2009/12/07(月) 17:59:43 ] まあ、今はGCがあるし
623 名前:デフォルトの名無しさん mailto:sage [2009/12/07(月) 20:34:51 ] iPhoneではGCが使えないらしい...ゾ
624 名前:デフォルトの名無しさん mailto:sage [2009/12/07(月) 22:15:56 ] Objective-Cのメモリ管理3原則 1. alloc,copy,retain,newしたインスタンスはreleaseする必要あり 2. 1した覚えの無いインスタンスは勝手にrelesaeしてはいけない 3. 1してないインスタンスはどこかでreleaseされるので、保持したい場合はretainかcopy
625 名前:デフォルトの名無しさん mailto:sage [2009/12/07(月) 22:28:22 ] add したら直ぐ release して良いのかと思ってたら、そうじゃないんだね
626 名前:デフォルトの名無しさん mailto:sage [2009/12/08(火) 00:43:52 ] >>621 オブジェクトプール+手動の参照カウントってのは、大昔の手法だよ。 人頼みだとバグが多くなるし、保守効率も下がる。だからメモリ管理コードを 一々書かなくて済むGCやスマートポインタが主流になってる。 模したSmalltalkみたいに最初からGC付きなら無かった機構だから>>622 が正解
627 名前:デフォルトの名無しさん mailto:sage [2009/12/08(火) 09:22:55 ] でも、iPhoneがGCは無効なんでしょう? ここにいる皆さんは、GC派とリファレンスカウンタ派、どちらが多いのでしょうか?
628 名前:621 mailto:sage [2009/12/08(火) 11:17:45 ] あ、すみません、iPhoneアプリ開発でObjective-C処女喪失したもので。 iPhoneはGC無いです。 (ただ、あったとしてもiPhoneはメモリ極小なので、autoreleaseさえ極力避けるべきと公式で指摘されています。) >>624 の規則だけですが、解れば便利な@propertyと@synthesizeも、 とりあえずちょっとイジってみようレベルの初見だと、 iPhone画面にHelloWorld表示するだけのソースすら、 「@property(nonatomic,retain)何この呪文、この入門書じゃソース解説にも記述無いし、 とりあえず詳細確認は後だな...あれ??実装でretainなんてしてなくね??なんで?? (ポチッ)ちょww動いたwwwけどHelloWorldのソースすらイミフwwww」 みたいな。 結局、入門書はHelloWorldで挫折、とりあえずちょっとイジるだけのつもりが、 公式ドキュメントを片っ端から読み漁って十分理解してから、 入門書のHelloWorldのソースを見直したのはいい思い出。。。 チラ裏に長文、本当にスマンかった。 最後に、InterfaceBuilderについて。 見た目だけでVB.NETくらい優しいお母さん的IDEだろうと思って触ると、火傷するね。