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
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コード一度読んでみるといいよ みんな平気で使ってるから
338 名前:デフォルトの名無しさん mailto:sage [2009/09/24(木) 21:10:20 ] >>326 すんません、>>282 わかりますか?
339 名前:デフォルトの名無しさん mailto:sage [2009/09/24(木) 21:10:41 ] 気持ち悪さで言うなら "nsstrMsg" の方がよっぽど気持ち悪いがな。
340 名前:デフォルトの名無しさん mailto:sage [2009/09/24(木) 22:37:19 ] >>338 NSApplicationMain()を実行するとイベントループという名の無限ループが開始される。 各アプリケーションにはイベントキューというキューがある。 イベントループの最初にNSAutoreleasePoolオブジェクトが確保される。 イベントループはイベントキューにイベントがはいってくるまで寝る。 Mac OS Xはイベントが発生すると該当アプリケーションのイベントキューにイベントを放り込む。 またはアプリケーションが自分のイベントキューにイベントを放り込む。 イベントキューにイベントが入るとイベントループは目を覚ます。 アプリケーションはイベントに応じて動作を起こす。 確保されたNSAutoreleasePoolオブジェクトが解放される。 始めの当たりに戻る。 アプリケーションを終了するとなんとexit(3)を呼び無限ループを吹っ飛ばす!! 余分な情報も混ぜてみました。必要な所だけお読みください。
341 名前:デフォルトの名無しさん mailto:sage [2009/09/24(木) 22:44:43 ] >>338 イベントループ内での autorelease pool は NSPortDelegate の handlePortMessage: 呼び出し前に autorelease pool が作られ、呼び出し後に drain される、と思えばok。 (メインスレッドではこれを勝手にやってくれているのであまり気にしなくてよい) NSThread 等でワーカスレッドを立ち上げただけでは作ってくれないので、そのときは ちゃんと自前で作ってやらないとautorelease されるインスタンスが登場する処理 (明示的に使うもの、内部処理で使うもの、のいずれも)が>>324 の様にエラーになる。 NSThread NSAutoreleasePool でググればたぶん誰かが何か書いてると思う 御指名の 326 じゃないので嫌なら無視してくれ
342 名前:338 mailto:sage [2009/09/24(木) 22:45:40 ] >>340 すばらしい。。。 いままで、いろんな人に訊いてきたけど、ここまで明快に わかりやすく答えてくれた方はいませんでした。 これで、安心して[obj autorelease];を使えます。 どうもありがとうございました。
343 名前:338 mailto:sage [2009/09/24(木) 22:50:07 ] >>341 おお、更なる詳しい説明! しかしながら、>>340 さんの説明までは理解できましたが、 >>341 さんの説明は自分の知識不足でちょっと難解です。。。 はぁ。。 せいぜいがんばります。 どうもありがとうございます。
344 名前:デフォルトの名無しさん mailto:sage [2009/09/25(金) 23:36:34 ] www.remus.dti.ne.jp/~yoshiki/cocoa/ed1/index.html このあたりも凄く参考になるぜ 第10-13回らへん
345 名前:デフォルトの名無しさん mailto:sage [2009/09/25(金) 23:59:48 ] MOSAの人は早くテクニカルドキュメント要約ライブラリの作成の仕事に戻るんだ
346 名前:338 mailto:sage [2009/09/26(土) 00:34:43 ] >>344 おわっ、これはかなりわかりやすそうな予感 勉強してみます どうもありがとう!
347 名前:デフォルトの名無しさん mailto:sage [2009/09/29(火) 18:33:50 ] UIButtonのRounded Rectタイプのボタンで,画像を使わず手軽にボタンの色を変える事は出来ないでしょうか?
348 名前:デフォルトの名無しさん mailto:sage [2009/09/30(水) 06:42:58 ] >>347 無理です あと、ここではなくiPhoneアプリ開発のスレに書きこんだ方がいいかと
349 名前:デフォルトの名無しさん [2009/10/09(金) 06:08:24 ] もの凄い初歩的な質問かもしれないのですが、 とあるサイトに↓のようなコードがありました。 NSMutableArray *anArray = [[NSMutableArray alloc] init]; NSString *str = [[NSString alloc] initWithString:@"文字列"]; [anArray addObject:str]; [str release]; NSStringのstrをNSMutableArrayに追加しているのですが、その直後にstrをreleaseしています。 NSMutableArrayに追加するということは、クラスのインスタンスをコピーして追加するという事なのでしょうか? addObjectした後は、元のオブジェクトは必要なくなるって認識でいいのでしょうか?
350 名前:デフォルトの名無しさん mailto:sage [2009/10/09(金) 06:38:19 ] stackoverflow.com/questions/696417/nsmutablearray-add-object-as-pointer-only
351 名前:デフォルトの名無しさん mailto:sage [2009/10/09(金) 08:42:00 ] >>349 retain/release について勉強してください。その辺わかってないと、 プログラム書いてるといずれ意味不明なクラッシュが多発して どうしようもなくなりますよ。 developer.apple.com/iphone/library/documentation/cocoa/Conceptual/MemoryMgmt/Articles/mmPractical.html release は C++ でいう delete とは違って、即座にオブジェクトを 破壊するわけではないです。retain カウントを減らすだけです。 retain カウントがゼロになれば、自動的に dealloc が呼ばれてオブジェクトが なくなります。 あるオブジェクトを持っておきたい人は、 retain して retain カウントを増やします。 いらなくなったら、 release して retain カウントを減らします。 誰からもオブジェクトがいらなくなったら、自動的に dealloc されます。 NSMutableArray に addObject すると、NSMutableArray は そのオブジェクトを保持していたいので、 retain されます。 一方で、>>349 のコードを書いているあなた自身は もうそのオブジェクトは直接はいらなくなるので、release しちゃっていいです。 インスタンスがコピーされているわけじゃなくて、 NSMutableArray がこのオブジェクトを保持するぜ!と言っているので、 あなたはもうこのオブジェクトを保持している必要がなくなるわけです。
352 名前:デフォルトの名無しさん mailto:sage [2009/10/09(金) 14:54:17 ] >>351 ありがとうございます。もんのすごく分かりやすいです。 一応リンク先の方も読んでおこうと思います。 結構既にメモリまわりのエラーが時々出たりしているので・・・
353 名前:デフォルトの名無しさん mailto:sage [2009/10/09(金) 15:06:58 ] 「一応」じゃなくてちゃんと読め。
354 名前:デフォルトの名無しさん mailto:sage [2009/10/09(金) 15:11:02 ] >>353 そうですね、ちゃんと読みます。 リンク先が英語で焦ったのですが、メモリに関する日本語リファレンス探したらあったのでそっちを読みます。 https://developer.apple.com/jp/iphone/library/documentation/Cocoa/Conceptual/MemoryMgmt
355 名前:デフォルトの名無しさん mailto:sage [2009/10/10(土) 18:22:49 ] >>282 GNUSTEPのソースを追えば、理解できると思う。
356 名前:デフォルトの名無しさん [2009/10/11(日) 18:49:15 ] 以下のコードで指定のURLからファイルを取得しようとしているのですが、 bad URLというエラーが返されてしまいます。 NSLogでnssUrlを表示させ、そのURLをコピペしてブラウザから閲覧したら確かに見る事ができるのでURLは間違っていないはずです。 NSString *nssUrl = [NSString stringWithFormat:@"%s/%s/%@/%s ", SERVER_ADDR, DIR_AREA, [semanticList objectAtIndex:i], FILE_SUBJECT]; NSURL *url = [NSURL URLWithString:nssUrl]; NSMutableURLRequest *req = [NSMutableURLRequest requestWithURL:url]; NSURLResponse *resp; NSError *err; NSData *result = [NSURLConnection sendSynchronousRequest:req returningResponse:&resp error:&err]; NSLog([err localizedDescription]); //←bad URLと表示される NSString *subjectData = [[NSString alloc] initWithData:result encoding:NSShiftJISStringEncoding]; [subjectData release]; このコードに何か問題がありますでしょうか?
357 名前:デフォルトの名無しさん mailto:sage [2009/10/11(日) 18:56:45 ] そのコピペしたURLを直接NSStringに nssUrl = @"hoge"ってつっこんだ結果はどうなってるのさ?
358 名前:デフォルトの名無しさん mailto:sage [2009/10/11(日) 18:59:50 ] >>357 あれ?それだとエラーが出てこなくてちゃんと動きます。 謎なんですけど・・・
359 名前:デフォルトの名無しさん mailto:sage [2009/10/11(日) 19:03:50 ] nssUrl を characterAtIndex で unichar 出して中身見ると、変なモンが混ざってると思うぞ。
360 名前:デフォルトの名無しさん [2009/10/11(日) 19:09:17 ] NSLog(@"url=%@",[url absoluteString]); で url の方にちゃんと入ってるかどうか確認したところ url = (null) と表示されました。>>357 さんのようにNSStringに直接ぶちこんだ時はちゃんとurlが表示されました。 でも、NSLog(@"nssUrl = %@", nssUrl);でnssUrlの中身を確かめたら、 stringWithFormat:で生成したときもちゃんとURLが表示されます。 NSURL *url = [NSURL URLWithString:nssUrl]; に何か問題があるのでしょうかね・・・
361 名前:デフォルトの名無しさん mailto:sage [2009/10/11(日) 19:13:54 ] >>359 おぉ、ありがとうございます。1文字ずつ表示させていったら [semanticList objectAtIndex:i]のあとに空白?みたいなのが1つ入ってました。 なんでだろう・・・とりあえず後は自分で原因探してみます。ありがとうございました!
362 名前:デフォルトの名無しさん mailto:sage [2009/10/11(日) 19:27:03 ] あまりスマートじゃないですが、固定長のデータなのでsubstringToIndexで対処しました。 ありがとうございました。
363 名前:デフォルトの名無しさん [2009/10/12(月) 00:13:57 ] char*をNSNumber型に変更するスマートな書き方はありますか?
364 名前:デフォルトの名無しさん mailto:sage [2009/10/12(月) 01:29:23 ] それポインタだろ。cString のことか?
365 名前:デフォルトの名無しさん [2009/10/12(月) 02:01:49 ] ファイルの削除に関する質問です。 NSError *err; if([[NSFileManager defaultManager] isDeletableFileAtPath:filePath]){ NSLog(@"消すことが可能"); [[NSFileManager defaultManager] removeItemAtPath:filePath error:&err]; NSLog([err localizedDescription]); } 上のコードを実行すると、NSLogの部分でEXC_BAD_ACCESSが出ます。 そもそものNSErrorの使い方が間違ってるのでしょうか?
366 名前:デフォルトの名無しさん mailto:sage [2009/10/12(月) 02:21:12 ] NSError *err = nil; ってしてみて
367 名前:デフォルトの名無しさん mailto:sage [2009/10/12(月) 02:51:14 ] >>366 ありがとうございます! 無事エラーが出ないようになりました。 なんかよくわかりませんが、allocもinitもせずに宣言するときはとりあえずnilをぶち込んでおく癖をつけておきます。
368 名前:デフォルトの名無しさん mailto:sage [2009/10/12(月) 03:06:32 ] >>364 そうです。Cの関数から返されたポインタのcharをNSNumberにしたいです。 今はNSStringに変換してからNSNumberに再変換してます。。
369 名前:デフォルトの名無しさん mailto:sage [2009/10/12(月) 03:26:11 ] > NSStringに変換してからNSNumberに再変換 何したいのか分からないから、この処理の部分を書いてみて
370 名前:デフォルトの名無しさん mailto:sage [2009/10/12(月) 04:10:56 ] >>369 char *c = (Cの関数); NSString *str = [NSString stringWithCString:c]; NSNumber *num = [NSNumber alloc] initWithInt:[str intValue]]; NSStringを介さずNSNumberにしたいです。
371 名前:デフォルトの名無しさん mailto:sage [2009/10/12(月) 04:23:25 ] [NSNumber numberWithInt : atoi(c)]; ってことか。NSString かませる必要ないね。
372 名前:デフォルトの名無しさん mailto:sage [2009/10/12(月) 04:41:21 ] >>371 そんな関数があるんですね、ありがとうございました!
373 名前:デフォルトの名無しさん mailto:sage [2009/10/12(月) 07:34:32 ] >>370 べつにそれでいいでしょう。なんでそれじゃいやなの? あと、strintWithCString は deprecated なので使わないこと! 文字コードの問題でいずれハマりますよ。 かならず UTF8String か encoding: つきのメソッドをつかってください
374 名前:デフォルトの名無しさん mailto:sage [2009/10/12(月) 11:07:42 ] >>367 「とりあえずnilをぶち込んでおく」とかいう意味のない癖をつけるよりも、 NSErrorに触る前にその処理が成功したのか失敗したのか判断する癖をつけましょう。 developer.apple.com/mac/library/documentation/Cocoa/Conceptual/ErrorHandlingCocoa/CreateCustomizeNSError/CreateCustomizeNSError.html#//apple_ref/doc/uid/TP40001806-CH204-SW2 処理が成功した場合、NSErrorにobjectが代入されていることは保証されていません。
375 名前:デフォルトの名無しさん mailto:sage [2009/10/12(月) 21:47:17 ] 意味なく無いだろ
376 名前:デフォルトの名無しさん mailto:sage [2009/10/12(月) 22:54:27 ] >>375 いや、訳も分からずとりあえずnilを入れるのは良くないよ、て言いたいんじゃないの?
377 名前:デフォルトの名無しさん mailto:sage [2009/10/13(火) 00:58:25 ] 値が未定義な自動変数がクラッシュの 温床になるって書いて置けばまだ 分かりやすいかな。
378 名前:デフォルトの名無しさん mailto:sage [2009/10/13(火) 02:04:19 ] 萩原本にはNSErrorにほ取り敢えずnil入れとく癖を付けろと書いてあったよ。
379 名前:デフォルトの名無しさん [2009/10/14(水) 16:51:04 ] 質問です。 クラスAの中でクラスBのオブジェクトを保持したくて、 クラスBの中でクラスAのオブジェクトを保持したいのですが、 それぞれのヘッダファイルの中でimportしようとすると入れ後状態?みたいになって コンパイルが通りません。こういう場合はどうすればいいのでしょうか。
380 名前:デフォルトの名無しさん mailto:sage [2009/10/14(水) 16:58:48 ] >>379 循環参照が発生してるのかな? スーパークラスかインターフェイスを作成して、それを保持させるとどうかな?
381 名前:デフォルトの名無しさん mailto:sage [2009/10/14(水) 16:59:38 ] @class
382 名前:デフォルトの名無しさん [2009/10/14(水) 17:00:05 ] >>380 あーなるほど、そういう方法があるんですね。 ありがとうございました!
383 名前:デフォルトの名無しさん mailto:sage [2009/10/14(水) 17:13:55 ] >>380 , 382 まてまてまてw >381 の言う通り、@class をつかえ。 ClassA.h; @class ClassB @interface ClassA : Hoge {ClassB *clsB} @end ClassA.m; #import "ClassA" #import "ClassB" ClassB.h; @class ClassA @interface ClassB : Piyo {ClassA *clsA} @end ClassB.m; #imprt "ClassB" #import "ClassA"
384 名前:デフォルトの名無しさん mailto:sage [2009/10/14(水) 17:14:49 ] しつれい、@class ClassA; ね。";" が抜けた
385 名前:デフォルトの名無しさん mailto:sage [2009/10/14(水) 17:59:46 ] >>383 ぎゃー、すでに変更し始めてました。 ちょっとバックアップファイルから復元して@classでやってみます。
386 名前:デフォルトの名無しさん mailto:sage [2009/10/14(水) 18:04:48 ] >>385 Objective-Cに興味があってこのスレ見てるけど、コードを書いた事が無いのにレスした俺のせいでスマン…
387 名前:デフォルトの名無しさん [2009/10/14(水) 18:13:47 ] @classで一瞬で解決しましたw ありがとうございました! >>386 なんという・・・w
388 名前:デフォルトの名無しさん mailto:sage [2009/10/14(水) 18:48:20 ] >>386 >Objective-Cに興味があってこのスレ見てるけど、コードを書いた事が無い なんだ、俺は他にもいたのか
389 名前:デフォルトの名無しさん mailto:sage [2009/10/14(水) 21:15:20 ] 一度くらい書けよw
390 名前:デフォルトの名無しさん mailto:sage [2009/10/15(木) 10:51:48 ] cat > hello.m #include <stdio.h> int main(int argc, char*argv[]){printf("Hello world.\n");return 0;} ^D make hello ./hello サフックスが.mだからObjCとしてコンパイルされます! これでObjCプログラマの仲間入りです!
391 名前:デフォルトの名無しさん mailto:sage [2009/10/15(木) 11:06:11 ] それでいいなら俺も書いた事あるぜ!w
392 名前:デフォルトの名無しさん [2009/10/16(金) 00:58:07 ] NSStringの中に文章が入っているのですが、その中にあるURLをリンクに置換したいと考えています。 例えば文章の中に www.google.co.jp/ のようなアドレスがあれば、 <a href="http;//www.google.co.jp/>http;//www.google.co.jp/</a> のように置換したいのですが・・・やり方がいまいちわかりません。 とりあえずNSStringのメソッドを見る限りだと無理で、NSMutableStringのメソッドを見る限りだと、 replaceOccurrencesOfString:withString:options:range:のようなメソッドがあったのですが、 正規表現が使えるのか不明です。何かいい方法はないでしょうか?
393 名前:デフォルトの名無しさん mailto:sage [2009/10/16(金) 01:04:28 ] regex(3)
394 名前:デフォルトの名無しさん mailto:sage [2009/10/16(金) 01:49:26 ] >>392 ありがとうございます。 RegexでググったらRegkit liteというのがあったのでそれを使いました。 ただ、URLのマッチングが上手くいかないので見ていただけないでしょうか・・・ NSString *searchString = @"I like www.google.co.jp/ yeah!!"; NSString *regexString = @"(|https:// ){1}[\\w\\.\\-/:\\#\\?\\=\\&\\;\\%\\~\\+]+"; NSString *replaceWithString = @"<a href=\"$1\">$1</a>"; NSString *replacedString = NULL; replacedString = [searchString stringByReplacingOccurrencesOfRegex:regexString withString:replaceWithString]; これで置換した結果が、 I like <a href="http://"></a> yeah!! になります。www.google.co.jp/が消えてしまってるのですが、何が間違ってるのでしょうか?
395 名前:デフォルトの名無しさん mailto:sage [2009/10/16(金) 02:01:15 ] 謎ですね。http://しかマッチしていないなら I like <a href="http://"></a>google.co.jp yeah!! になりそうなんですけどね・・・
396 名前:デフォルトの名無しさん mailto:sage [2009/10/16(金) 02:05:04 ] そのライブラリは知らないけど、普通はカッコで囲ってるところしかキャプチャされないのでは?
397 名前:デフォルトの名無しさん mailto:sage [2009/10/16(金) 02:25:22 ] NSString *regexString = @"(https?://[a-zA-Z\.\-\#\?\=\&\;\%\~\+]+)"; でいいんじゃないの
398 名前:デフォルトの名無しさん [2009/10/16(金) 02:44:41 ] 括弧で囲ってるところしかキャプチャされないんですか・・・ 無事マッチできました。ありがとうございました!
399 名前:デフォルトの名無しさん [2009/10/17(土) 05:37:25 ] 次のようなプログラムを動かすと配列0番目を参照してるはずなのに 200が返されます。何故なんでしょうか? int main(int argc, char *argv[]) { array = [[NSMutableArray alloc] init]; [self bindInt:0 value:100]; [self bindInt:0 value:200]; Element *h = [array objectAtIndex:0]; printf("value:%d¥n", *(int*)h.p); } - (void)bindInt:(int)holderId value:(int)value { // Elementクラスにはvoid *p変数のみ定義されてる Element *holder = [[[Element alloc] init] autorelease]; holder.p = &value; [array addObject:holder]; } ちなみにbindIntのhoderId引数自体を外すと0が返されます。 これもよく理由がわかりません。。
400 名前:デフォルトの名無しさん mailto:sage [2009/10/17(土) 06:31:06 ] なんでintのポインタ渡すの? それスグ死ぬやん。
401 名前:デフォルトの名無しさん mailto:sage [2009/10/17(土) 06:50:20 ] >>400 へ、死ぬんですか。 変数pはvoid*にして、様々な型を格納できるようにしたかったのです。 まだあまり理解できていないのかも。 この辺りは何をキーワードに調べれば良いのでしょうか。
402 名前:デフォルトの名無しさん mailto:sage [2009/10/17(土) 10:15:22 ] void * に格納できるのはポインタだけで、「様々な型を格納」できたりはしないぞ。
403 名前:デフォルトの名無しさん mailto:sage [2009/10/17(土) 11:45:32 ] その前に self って誰?
404 名前:デフォルトの名無しさん mailto:sage [2009/10/17(土) 14:11:23 ] プールもないのに autorelease ?
405 名前:デフォルトの名無しさん mailto:sage [2009/10/17(土) 14:29:59 ] >>399 >holder.p = &value; ここでスタック上に一時的に作られたローカル変数のアドレス取ってるから ゴミを拾って当たり前 Cの初歩で「ローカル変数のアドレス返しちゃダメ」みたいなトピックあると 思うからその辺から読む事
406 名前:デフォルトの名無しさん mailto:sage [2009/10/17(土) 14:54:20 ] NSImage *backBlock = [[NSImage alloc] initWithContentsOfFile:@"./images/Block_0.png"]; のところで、 initializer element is not constant というエラーが出て途方に暮れています。 何が悪いのか、教えてください。
407 名前:デフォルトの名無しさん mailto:sage [2009/10/17(土) 15:13:57 ] それを NSImage *backBlock = [[NSImage alloc] initWithData:[NSData dataWithContentsOfFile:@"./images/Block_0.png"]]; とかに変えてもエラーが出るのなら、他の部分が問題。
408 名前:デフォルトの名無しさん mailto:sage [2009/10/17(土) 18:26:43 ] というか、突っ込みどころが多すぎてどこから突っ込んだらいいのやら。
409 名前:デフォルトの名無しさん [2009/10/18(日) 05:31:50 ] とりあえず俺のケツから突っ込んでこいよ
410 名前:デフォルトの名無しさん mailto:sage [2009/10/19(月) 07:59:06 ] 次のようなコードでmyNotePadオブジェクトのプロパティの値を変えようと試みているのですが、//Diagnosticsの部分でNSLogの結果が 0 や (null)と表示されてしまいます。 // プロパティnoteTextにコンテントの内容をセット myNotePad.noteText = tvContent.text; // プロパティsavedDateに日付をセット myNotePad.savedDate = [NSDate date]; // プロパティsaveCyclesをインクリメント myNotePad.saveCycles++; //////// Diagnostics NSLog(@"in saveData - tvContent.text - %@", tvContent.text); // これはちゃんと表示される NSLog(@"in saveData - noteText - %@", myNotePad.noteText); // nullと表示される NSLog(@"in saveData - savedDate - %@", myNotePad.savedDate); // nullと表示される NSLog(@"in saveData - saveCycles - %d", myNotePad.saveCycles); // 0と表示される 初歩的な質問で申し訳ないのですが、どなたか教えていただけますか? マジで困ってます・・・
411 名前:デフォルトの名無しさん mailto:sage [2009/10/19(月) 08:23:33 ] すみません自己解決しました
412 名前:デフォルトの名無しさん mailto:デフォルトの名無しさん [2009/10/19(月) 11:03:58 ] >>411 自己解決したのはいいとして、何が原因だったかくらい書いたらどうかな? それを読んで役に立つ人もいるはずだし。 ここでいろいろ助けてもらっても、結果は独り占めして誰にも教えたく無い、 っていう性格なら、まあ強制はしないけどね。
413 名前:デフォルトの名無しさん mailto:sage [2009/10/19(月) 12:33:12 ] 変数に入った文字列を=で代入なんてできない。初歩的すぎる。