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
237 名前:デフォルトの名無しさん mailto:sage [2009/09/02(水) 18:36:47 ] プールはどこにある
238 名前:234 [2009/09/02(水) 19:04:07 ] >>237 ありがとうございます。 プール? retainCountはNSObjectのメンバ変数で allocでインスタンス作った時は関係ないんですよね? つまり自分自身にどれだけ参照されてるかの数を持っていて releaseが呼ばれて0になったときdeallocが呼ばれると。 プールが関係あるのはautoreleaseを自分でした時とそれを呼び出してるような コンストラクタを呼び出したときですよね? もしかしてなんか間違って勉強進めてます?
239 名前:デフォルトの名無しさん mailto:sage [2009/09/02(水) 19:21:05 ] dealloc された object (のアドレス)に retainCount を送ったところで、 まともな結果が戻ってるわけがない。 > retainCountが1のオブジェクトにreleaseを送信後メッセージを送るとランタイムエラーになるんじゃなかったでしたっけ? そんな仕様はない。
240 名前:デフォルトの名無しさん mailto:sage [2009/09/02(水) 20:41:49 ] >>236 最後のNSLogで存在しない(解放済み)オブジェクトにメッセージを送っているからエラーが出る。
241 名前:デフォルトの名無しさん mailto:sage [2009/09/02(水) 20:44:55 ] retainCountなんてメンバ変数は存在しないし NSMutableStringはtoll free bridgeになってるから実体はCFMutableStringでしょ。
242 名前:234 [2009/09/02(水) 21:22:08 ] >>239 236をNSObjectでやると objc[2322]: FREED(id): message retainCount sent to freed object=0x103460 Illegal instruction というエラーがおきます。NSMutableStringでやるとobjectがないはずのところで1が返ります。これは特に決まった動き(NSMutableStringだからとか)ではなく何がおこるかわからないということなんでしょうか? >>240 質問がおかしかったですね。すいません。エラーが起きないのはなんででしょうか?と聞きたかったのです。 >>241 retainCountはメソッドでしたね。たしか_rcとかいうメンバだったような。 「NSMutableStringはtoll free bridgeになってるから実体はCFMutableString」というのはわかるのですが、ないはずのobjectにメッセージが送れてしまうのかとおもったのです。
243 名前:デフォルトの名無しさん mailto:sage [2009/09/02(水) 22:29:30 ] MacsBugみたいなアセンブリレベルでできるデバッガってしらない? 実行中のコードをデバッグできるやつ。
244 名前:デフォルトの名無しさん mailto:sage [2009/09/02(水) 22:32:41 ] TMON
245 名前:デフォルトの名無しさん mailto:sage [2009/09/02(水) 22:59:37 ] TMONが見つからない。 どこにいけばある?
246 名前:デフォルトの名無しさん mailto:sage [2009/09/02(水) 23:24:56 ] 遠い昔・・・
247 名前:デフォルトの名無しさん mailto:sage [2009/09/02(水) 23:55:39 ] そんな 少年の日の心の中にいた青春の幻影 では困るのだけど。
248 名前:デフォルトの名無しさん mailto:sage [2009/09/03(木) 10:07:49 ] >>243 マルチ乙
249 名前:デフォルトの名無しさん mailto:sage [2009/09/03(木) 12:08:37 ] >>242 [[クラス alloc] init] の結果は retain count が 1 であるとは決まってません。 既に存在するオブジェクトが使い回されることもよくあります。 [NSNumber alloc] initWithInt:1] を何回も呼んで NSNumber をつくったとして、 毎回違うオブジェクトを作る必要は全くないでしょ? だから二回目以降は単にすでにある object をどっかからとってきて、 単に retain して返しているだけかもしれません。 NSString の場合は理由が違って、alloc] init] の段階では class cluster の中のどのクラスが実際に使われるかきまってないので、 NSPlaceholderString というのの唯一のインスタンスが使い回されてるんです。 とにかくそんなことを気にせずに、retain / release をきちんとしていたら 問題はないようになってます。
250 名前:242 mailto:sage [2009/09/05(土) 21:30:20 ] >>249 レスありがとうございます クラスクラスターまでまだ行ってないのですが、NSStringの説明でその言葉は見たことがあったので、なんかそれが関係してるのかな、と思ってました。 とりあえず、先へ進もうと思います。
251 名前:196 mailto:sage [2009/09/06(日) 22:10:26 ] Obj-Cって 継承階層増えるだけでどれくらい オーバーヘッドあるのですか?
252 名前:デフォルトの名無しさん mailto:sage [2009/09/06(日) 23:16:09 ] 2cmくらい。
253 名前:デフォルトの名無しさん mailto:sage [2009/09/07(月) 10:47:39 ] それはひょっとしてギャグで言ってるのか
254 名前:デフォルトの名無しさん mailto:sage [2009/09/07(月) 13:05:58 ] >>251 ランタイムの実装次第じゃない?
255 名前:デフォルトの名無しさん mailto:sage [2009/09/07(月) 23:50:03 ] >>251 計測してみたら?
256 名前:デフォルトの名無しさん mailto:sage [2009/09/09(水) 17:48:11 ] >>242 >質問がおかしかったですね。すいません。エラーが起きないのはなんででしょうか?と聞きたかったのです。 とても基本的なことなので覚えておくべきなのですが、 C、 C++、 Objective-C などの言語では解放済みのメモリ領域や オブジェクトに対する操作の結果は決められていません。 そもそも「エラーが起きる」という決まりがないのです。 (処理系によってはデバッグ用のライブラリでは解放後のメモリを 変な数値で埋めるなどして、解放済みのオブジェクトへの操作で エラーが出やすいようにしてくれるような機能もあります)
257 名前:デフォルトの名無しさん [2009/09/10(木) 12:56:51 ] わけあってCとObjCの混在したプログラムを書いているのですが @interface CHoge : NSObject{ void (*_ptr)(); } // _ptrのアクセサを書きたい @end このインスタンス変数を読み書きするためのアクセサをどうやって書けばよいかわかりません。 わかる方教えていただけますでしょうか?
258 名前:デフォルトの名無しさん mailto:sage [2009/09/10(木) 14:01:44 ] - (void)_ptr{ //関数取得 return (*_ptr)(); } - (void)set_ptr:(void)(*hoge)() //関数セット { void _ptr = hoge } じゃ駄目なの?
259 名前:デフォルトの名無しさん mailto:sage [2009/09/10(木) 14:02:43 ] ごめん、最後のvoidいらないや。
260 名前:デフォルトの名無しさん mailto:sage [2009/09/10(木) 17:50:31 ] >>257 @interface CHoge : NSObject{ void (*_ptr)(); } @property (nonatmic, assign) void (*ptr)(); @end と宣言しといて, @synthesize ptr=_ptr; で生成してもらうか、 - (void (*)())ptr { return _ptr; } - (void)setPtr:(void(*)())ptr { _ptr = ptr; } などと自前で書く。
261 名前:デフォルトの名無しさん mailto:sage [2009/09/10(木) 19:31:49 ] 萩原1.0のコードを本見てコメントまで正確に打ち込んでいたら warning: multi-line comment に嵌った・・・ 能で改行するなよぅ。
262 名前:デフォルトの名無しさん mailto:sage [2009/09/10(木) 23:27:19 ] 知らんがな
263 名前:デフォルトの名無しさん mailto:sage [2009/09/12(土) 00:46:33 ] charからNSStringに簡単に変換する方法はないでしょうか?
264 名前:デフォルトの名無しさん [2009/09/12(土) 01:02:59 ] すみません。情報が少なすぎました。 char buf[1024]; で用意したバッファにreadで文字を読み込みます。 その後、NSStringのプロパティを持つやつに label.text = @"buf"; のように受け取った文字をNSStringに変換して代入したいと考えてます。 今のところ、 NSString *str = [[NSString alloc] initWithUTF8String:szStr]; label.text = str; [str release]; のようにやっているのですが、2回目以降はうまく代入できません。
265 名前:デフォルトの名無しさん mailto:sage [2009/09/12(土) 01:21:14 ] 「うまく代入できません」 ↑ダメな質問の例
266 名前:デフォルトの名無しさん mailto:sage [2009/09/12(土) 01:45:07 ] >>264 デバッガを使えるようになりましょう。
267 名前:264 mailto:sage [2009/09/12(土) 03:11:05 ] すみません、根本的に何かが違ったようです。 出直してきます。。。
268 名前:デフォルトの名無しさん mailto:sage [2009/09/12(土) 11:11:44 ] デバッガの使い方ってアップルからドキュメント出てますか?
269 名前:デフォルトの名無しさん mailto:sage [2009/09/12(土) 15:53:36 ] >>268 >デバッガの使い方ってアップルからドキュメント出てますか? Xcodexのドキュメントに乗ってないか? どこにでもあるようなデバッガ だから、マニュアルなしでも使えるぞ。
270 名前:デフォルトの名無しさん [2009/09/15(火) 01:26:27 ] >>264 label.text = str; のあとにstr releaseすると、label.textもreleaseされちゃわないか?
271 名前:デフォルトの名無しさん mailto:sage [2009/09/15(火) 03:17:02 ] プロパティのsetter semanticsがassign(デフォルト)だとそうなんのかね?
272 名前:デフォルトの名無しさん mailto:Sage [2009/09/15(火) 13:27:10 ] NSString をプロパティにするときは copy にしなきゃダメだろ、常識的に考えて。
273 名前:デフォルトの名無しさん mailto:sage [2009/09/15(火) 14:23:09 ] どういう常識?
274 名前:デフォルトの名無しさん mailto:sage [2009/09/15(火) 14:53:09 ] NSMutableString が渡されたときに外部で書き換えられたらこまるから、GC使ってるときでもcopyにしておいたほうがいい、場合もあるかもしんない。
275 名前:デフォルトの名無しさん mailto:sage [2009/09/15(火) 16:57:11 ] NSArrayだとどうするんだろう? 自力DeepCopy?
276 名前:デフォルトの名無しさん mailto:sage [2009/09/15(火) 17:10:05 ] そこは状況に応じてだろJK 参照を保持させたいのか、それともインスタンスを複製して保持させたいのか、だろ?
277 名前:275 mailto:sage [2009/09/15(火) 18:31:34 ] >>272 これに対してだけど?
278 名前:デフォルトの名無しさん mailto:sage [2009/09/15(火) 19:32:51 ] >>277 そこは状況に応じて、だろ。
279 名前:デフォルトの名無しさん mailto:sage [2009/09/15(火) 20:42:03 ] >>264 get、setメソッドを使わないと、=だとオブジェクトの参照が 代入されるだけだからなぁ。 そりゃ、[str release];は実質、[label.text release];と同じになるだろうな
280 名前:デフォルトの名無しさん [2009/09/15(火) 20:53:02 ] Cocoaのautorelease poolの解放タイミングがいまいちわからない それとも、もうGC導入されて、あんま使ってない?
281 名前:デフォルトの名無しさん mailto:sage [2009/09/15(火) 22:40:53 ] >>280 自分で明示的にpool作ってないんならイベントループ終了時にそのループ内でのプールが解放される
282 名前:デフォルトの名無しさん [2009/09/15(火) 22:49:35 ] >>281 そう!まさに、そのイベントループとやらがようわからんのです。。。
283 名前:デフォルトの名無しさん mailto:sage [2009/09/15(火) 23:16:51 ] >>279 >get、setメソッドを使わないと、=だとオブジェクトの参照が >代入されるだけだからなぁ。 昔はそうだったっけ
284 名前:デフォルトの名無しさん mailto:sage [2009/09/15(火) 23:22:29 ] >>283 えっ、いまはちがいまするか?
285 名前:デフォルトの名無しさん mailto:sage [2009/09/15(火) 23:25:23 ] >>284 Objective-C 2.0 以降しか知らないけど、 obj.prop = hoge は [obj setProp:hoge] と同義。
286 名前:デフォルトの名無しさん mailto:sage [2009/09/15(火) 23:48:58 ] >>285 へー、そうなんだ。 勉強になった。 ただ、知らないと、逆に参照渡ししたいときとかハマったりしそう。。 それとも、プロパティの時に限って、=がアクセッサメソッド呼び出し で実装してくれるのかな?
287 名前:デフォルトの名無しさん mailto:sage [2009/09/16(水) 00:12:06 ] プロパティでドット構文使った時だけだよ てかなんでみんなCocoaスレでやらないのw
288 名前:デフォルトの名無しさん mailto:sage [2009/09/16(水) 00:14:30 ] @selector(func_name)って、Cでいう関数ポインタと同じようなもん? (これもCocoaスレでやる話?w)
289 名前:デフォルトの名無しさん mailto:sage [2009/09/16(水) 00:47:07 ] >>286 いやいやそうじゃなくて、そもそもクラスCにインスタンス変数x があったときに C* c=... c.x= は(xがプロパティでなければ)文法エラーだから。cはポインタだから、やるにしても c->x= でしょ。曖昧さはないです。
290 名前:デフォルトの名無しさん mailto:sage [2009/09/16(水) 00:54:45 ] >>289 なるほど。 確かにObjective-Cのクラスのメンバにはc.xみたいにはアクセス できないよねprivateメンバじゃなくても c->xになる。 で、ごめん、質問なんだけど、プロパティって何だっけ?w
291 名前:デフォルトの名無しさん mailto:sage [2009/09/16(水) 09:42:48 ] >>290 ttp://e-words.jp/w/E38397E383ADE38391E38386E382A3.html 質問の内容が低レベルすぎる
292 名前:デフォルトの名無しさん mailto:sage [2009/09/16(水) 09:56:37 ] >>288 ttp://journal.mycom.co.jp/column/objc/018/index.html
293 名前:デフォルトの名無しさん mailto:sage [2009/09/16(水) 14:53:14 ] >>288 C でいう関数ポインタは特定の関数の実装を直接指示するでそ(実体はアドレスだし)。 C++ のメンバ関数ポインタは、特定のクラス(とその派生クラス)のオブジェクトの仮想あるいは そうでない関数を間接的にあるいは直接に指示するでそ(実体はvtbl上のオフセットまたはアドレス)。 Objective-C のセレクタは、どのようなクラスあるいはインスタンスのメソッドでも名前で指示する ことができる(実体は文字列)。
294 名前:デフォルトの名無しさん mailto:sage [2009/09/16(水) 20:03:40 ] >>291 ggrksって感じですまんかった。 んで、プロパティって、つまりはメンバ変数のことだとおもうけど、 そうするとc.xのようにドットで表すのは間違いじゃねって思ったんだけど それは間違い? >>289 が納得できない
295 名前:デフォルトの名無しさん mailto:sage [2009/09/16(水) 20:18:25 ] まちがい。
296 名前:デフォルトの名無しさん mailto:sage [2009/09/16(水) 20:26:24 ] >>294 Obj-CのプロパティはC++のメンバ変数じゃないから . で表しても全く問題ない。 最近の言語では当たり前の糖衣構文。C# も同様のシンタックスシュガーを持つ。 とはいえ、foo の bar プロパティが構造体だったとき、foo.bar.baz = 100 で foo.bar.baz が 100 にならないのはみっともないのは確か。
297 名前:デフォルトの名無しさん mailto:sage [2009/09/16(水) 21:26:55 ] >>296 始めたばかりの頃コレでハマったのはいい思い出。
298 名前:デフォルトの名無しさん [2009/09/17(木) 02:58:22 ] 質問です。 NSDate *now = [NSDate date]; self.lbl.text = [now descriptionWithCalendarFormat:@"%H:%M:%S" timeZone:nil locale:nil]; で、時間を表示させているのですが、この2行目の部分で warning: 'NSDate' may not respond to '-descriptionWithCalendarFormat:timeZone:locale:' (Messages without a matching method signature will be assumed to return 'id' and accept '...' as arguments.) という警告が出るのですが、これはどういう事なのでしょうか?
299 名前:デフォルトの名無しさん mailto:sage [2009/09/17(木) 04:05:43 ] iPhoneでは-descriptionWithCalendarFormat:timeZone:locale: は梨になった。 NSDateFormatterを使いましょう。Mac側でもやめる気満々なことが書いてあるので できれば移行していった方がよいようだ。
300 名前:デフォルトの名無しさん [2009/09/17(木) 10:57:56 ] >>299 そうでしたか。ありがとうございます! おかげさまで警告なしでビルドできるようになりました。
301 名前:デフォルトの名無しさん mailto:sage [2009/09/18(金) 01:09:24 ] またもしかするとiPhoneでは無しになったものかもしれないのですが、 NSHost *host = [NSHost hostWithAddress:@"192.168.0.125"]; の部分で、+hostWithAddreassメソッドが見つからないという警告が出てしまいます。 Mac OSX Reference Libraryを参照しながら作ってるので、見つからないはずはないのですが、 iPhoneで実装するとしたら変わりに何を使えばいのでしょうか・・・。 というか、変わりとなるクラスやメソッドってどうやって調べればいいのでしょうか・・・
302 名前:デフォルトの名無しさん mailto:sage [2009/09/18(金) 09:01:51 ] alloc] initWithAdress:
303 名前:デフォルトの名無しさん mailto:sage [2009/09/18(金) 18:30:44 ] >>302 それもダメなようです・・・。
304 名前:デフォルトの名無しさん mailto:sage [2009/09/18(金) 18:57:40 ] >>301 綴りミス? +hostWithAddre[a]ssメソッドが見つからないという警告が出てしまいます
305 名前:デフォルトの名無しさん [2009/09/18(金) 19:03:45 ] >>304 綴りミスです。ごめんなさい。 プログラムの方はちゃんと書いてあります。 警告あっても、正常に動作はするのですが、警告があるままやるのは気持ち悪いですね・・・
306 名前:デフォルトの名無しさん mailto:sage [2009/09/18(金) 19:16:43 ] メソッド廃止になったのに使うのは間違い 警告に添え
307 名前:デフォルトの名無しさん mailto:sage [2009/09/18(金) 19:19:51 ] >>306 で、deprecatedでない代替メソッドはなんなの?
308 名前:デフォルトの名無しさん mailto:sage [2009/09/18(金) 19:24:25 ] 教えてあげないよ!
309 名前:デフォルトの名無しさん mailto:sage [2009/09/18(金) 19:25:59 ] 301≠307ですよ
310 名前:デフォルトの名無しさん mailto:sage [2009/09/18(金) 21:57:57 ] >>301 CFHostCreateWithName()
311 名前:デフォルトの名無しさん [2009/09/19(土) 08:50:39 ] 久しぶりにCocoaで遊んじゃお!!わくわく
312 名前:デフォルトの名無しさん mailto:sage [2009/09/19(土) 08:52:04 ] 連休だもんな!
313 名前:デフォルトの名無しさん mailto:sage [2009/09/19(土) 08:58:08 ] そうだな! さて、なに作ろうw
314 名前:デフォルトの名無しさん mailto:sage [2009/09/19(土) 10:00:00 ] 連休を有意義に過ごすための予定表アプリを作って連休をつぶすのはどうじゃろか
315 名前:デフォルトの名無しさん mailto:sage [2009/09/19(土) 15:33:51 ] 来年のGW用ですね。
316 名前:デフォルトの名無しさん [2009/09/20(日) 22:47:54 ] NSString *message = [NSString stringWithUTF8String:[messageData bytes]]; NSLog(@"%@", message); [message release]; とある関数の中にこういうコードがあるのですが、 2回目呼び出した時に、メモリ関係のエラーか何かが出てしまいます。 この記述って何か間違ってるのでしょうか?
317 名前:デフォルトの名無しさん mailto:sage [2009/09/20(日) 22:50:45 ] 取り敢えずreleaseすんな。 alloc initWith するか NSLog(@"%@", [NSString stringWithUTF8String:[messageData bytes]]); で
318 名前:デフォルトの名無しさん mailto:sage [2009/09/20(日) 22:58:01 ] >>317 ありがとうございます。エラーが消えました! 基本的にreleaseするのはallocした時だけって認識持っといていいんですかね・・・
319 名前:デフォルトの名無しさん mailto:sage [2009/09/20(日) 23:09:52 ] www.google.co.jp/search?q=%E3%82%B3%E3%83%B3%E3%83%93%E3%83%8B%E3%82%A8%E3%83%B3%E3%82%B9%E3%82%B3%E3%83%B3%E3%82%B9%E3%83%88%E3%83%A9%E3%82%AF%E3%82%BF
320 名前:デフォルトの名無しさん mailto:sage [2009/09/20(日) 23:31:07 ] なるほど、ありがとうございます。コンビニエンスコンストラクタは 放っておけば勝手にreleaseされるんですね。
321 名前:デフォルトの名無しさん mailto:sage [2009/09/22(火) 13:35:53 ] 本当に糞面倒な言語だな
322 名前:デフォルトの名無しさん mailto:sage [2009/09/22(火) 16:47:43 ] 基本、Cだからな
323 名前:デフォルトの名無しさん mailto:sage [2009/09/22(火) 21:42:41 ] 言語関係ねえ
324 名前:デフォルトの名無しさん [2009/09/23(水) 22:42:16 ] 2009-09-23 22:38:40.195 test[4488:5203] *** _NSAutoreleaseNoPool(): Object 0x101d660 of class NSCFNumber autoreleased with no pool in place - just leaking Stack: (0x305a2e6f 0x30504682 0x2dc4 0x960b0155 0x960b0012) ビルドとデバッグをすると、あるところでこういうメッセージが出るのですが、 これって何か問題が起こっているのでしょうか? その後も特に問題なくアプリは動いているのですが・・・ パッとみた感じだと、NSCFNumberはオートリリースされたってだけで別に問題ない・・・んですかね。。。
325 名前:デフォルトの名無しさん [2009/09/23(水) 23:20:20 ] ちなみに NSNumber *num = [NSNumber numberWithInt:iRet]; NSLog(...); [num release]; こういう場所(NSNumberやNSStringの生成や解放を行う場所)で必ず出てくるっぽいです。
326 名前:デフォルトの名無しさん mailto:sage [2009/09/23(水) 23:28:10 ] >>324 問題があるので autorelease pool について勉強してください
327 名前:デフォルトの名無しさん [2009/09/23(水) 23:30:13 ] >>326 問題ありですか・・・。 わかりました、ヒントをありがとうございます! 知らない言葉なのでちょっと勉強してきます
328 名前:デフォルトの名無しさん [2009/09/23(水) 23:44:52 ] 今度はObjective-Cの質問です!! クラスを作るまでもない関数ってどういう風に宣言すればいいのでしょうか・・・? C言語でいう、ふつうの void swapInt(int a, int b); みたいな感じの関数を作りたいと思ってます。 クラスのメソッドだったら -(void)showMessage:(NSString *)nsstrMsg flag:(BOOL *)flag { ... } みたいな感じで作るのは分かっているのですが・・・。 それとも、Objective-CはC言語のような関数は基本的になくて、それでも使いたい場合は クラスを定義して、クラスメソッドを用意するのが普通なのでしょうか?
329 名前:328 [2009/09/23(水) 23:45:36 ] すみません、誤爆です。
330 名前:デフォルトの名無しさん mailto:sage [2009/09/24(木) 13:23:26 ] >>328 void swapInt(int a, int b); じゃだめなの?
331 名前:デフォルトの名無しさん [2009/09/24(木) 15:54:11 ] >>330 今はそのC言語ライクな書き方で対処して正常に動いてるのですが、 なんかObject-Cのソースの中に、Cの記述方法が混ざってるのが気持ち悪くて・・・
332 名前:デフォルトの名無しさん mailto:sage [2009/09/24(木) 15:59:03 ] その感覚がおかしい。
333 名前:デフォルトの名無しさん [2009/09/24(木) 16:13:08 ] いや、Objective-Cの書き方自体も気持ち悪いんだけど、 その書き方で書くならその書き方でソースコードを統一した方が気持ちいいんだもん・・・
334 名前:デフォルトの名無しさん mailto:sage [2009/09/24(木) 16:25:44 ] Objective-Cは言語じゃなくて、C言語のライブラリと、それを使いやすくするためのプリプロセッサだと考えるべき。
335 名前:デフォルトの名無しさん mailto:sage [2009/09/24(木) 18:16:44 ] そんなに気持ち悪いならソースファイル自体をわければいいじゃんか。
336 名前:デフォルトの名無しさん mailto:sage [2009/09/24(木) 18:22:03 ] どうしてもというのなら。 @interface NSObject(StaticMethods) + (void)showMessage:(NSString *)nsstrMsg flag:(BOOL *)flag; @end @implementation NSObject(StaticMethods) + (void)showMessage:(NSString *)nsstrMsg flag:(BOOL *)flag { ... } @end 使用例 [NSObject showMessage:@"hoge" flag:NO]; あなた以外誰も得しませんが。
337 名前:デフォルトの名無しさん mailto:sage [2009/09/24(木) 20:45:44 ] >>333 他人のObjCコード一度読んでみるといいよ みんな平気で使ってるから