1 名前:デフォルトの名無しさん mailto:sage [2011/08/21(日) 10:47:48.04 ] Objective-C(オブジェクティブ シー)はプログラミング言語の一種。C言語をベースにSmalltalk型のオブジェクト指向機能を持たせた上位互換言語。 (Wikipedia:ja.wikipedia.org/wiki/Objective-C より) Objective-C [ObjC part:5]; hibari.2ch.net/test/read.cgi/tech/1279730299/ Objective-C [ObjC part:4]; pc12.2ch.net/test/read.cgi/tech/1239721860/ 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
411 名前:デフォルトの名無しさん mailto:sage [2011/12/21(水) 08:17:47.23 ] >>410 それ、定期的に流れるスパムだよ
412 名前:デフォルトの名無しさん [2011/12/21(水) 17:21:27.29 ] クラスの中で変数をセットする場合って、たとえば、 name = @”hoge”; ではなく、self.name = @”hoge”; もしくは、[self setName:@”hoge”];とやるべき? publicな変数にそうしたほうがいいのは分かるけど、作法として、privateな変数にまでそうやるべきもの? privateを含む全ての変数に@property,@synthesizeを設定するのは、ちょっと面倒に感じるのだけど。
413 名前:デフォルトの名無しさん mailto:sage [2011/12/21(水) 17:31:31.47 ] オーナーシップ GC、ARC で答えが微妙に違う KVO発動させなくていいなら割とどうでもいい
414 名前:412 mailto:sage [2011/12/21(水) 20:20:34.18 ] >>413 >GC、ARC iOS用に書いてたんだけど、ARCになるとルール全然違うのね。うへえ。 >KVO発動させなくていいなら割とどうでもいい 参考になった。ありがとう。
415 名前:デフォルトの名無しさん mailto:sage [2011/12/21(水) 21:13:11.69 ] 半端な知識でインスタンス変数に生で代入したりするとメモリリークしまくる だけだから素直にプロパティ使った方がいいと思うけどね モダンランタイムになってから自分で変数用意してやる必要無いし 手間としてはそんな変わらん
416 名前:デフォルトの名無しさん mailto:sage [2011/12/21(水) 21:13:55.54 ] まあARC使うならあんまり気にしなくていいけど
417 名前:デフォルトの名無しさん mailto:sage [2011/12/21(水) 21:48:56.85 ] >>411 そんなスパムにコメントしたあたくしがこっぱずかしー
418 名前:デフォルトの名無しさん mailto:sage [2011/12/21(水) 22:44:48.35 ] 穴を見つけて入れ!
419 名前:デフォルトの名無しさん [2011/12/22(木) 00:18:13.73 ] アホな質問でごめん。以下のfuncで messageの解放がはじまるのは、forループが終わった後で、 regexpの解放がはじまるのは、funcを抜けた後という理解で合ってる? つまり、スコープ内でのautoreleaseオブジェクトの生存が保証されてるのか、ということなんだけど。 たとえばfuncをバックグラウンドで実行させている途中でメモリの解放がかかったときのために、 (まさか、いらないとは思うんだけど)関数内の頭と尻尾で手動でallocとreleaseしたほうがよいのかとか混乱中。 - (void)func:(NSArray *)sourceArray pattern:(NSString *)pattern relace:(NSString *)replace { NSRegularExpression *regexp = [NSRegularExpression regularExpressionWithPattern:pattern options:0 error:&error]; for(NSString *message in sourceArray) { NSString *replaced = [regexp stringByReplacingMatchesInString:message options:0 range:NSMakeRange(0,message.length) withTemplate:replace]; /* 中略 */ } }
420 名前:デフォルトの名無しさん mailto:sage [2011/12/22(木) 00:42:02.76 ] message は retain されてないから、解放も糞もない。 regexp の解放は、func を呼び出す状況に依るだろう。
421 名前:デフォルトの名無しさん mailto:sage [2011/12/22(木) 01:15:47.16 ] >>419 ARC かどうかで微妙に違う。ARC 無効の場合、 ・message は sourceArray が retain してるものを参照してるので、 sourceArray から削除されない限り有効。 ・regexp は一番内側の autorelease pool が解放されない限り有効。 自分でわざわざ autorelease pool を生成/解放しない限り、 スコープを抜けても有効。特に、return してもまだ生きてる。 ARC の場合、regexp や message などの変数はデフォルト __strong なので、 代入した時点で retain され、スコープから抜ける時に release される。 (スコープから抜けても sourceArray や autorelease pool が所有権を 持ってるので、ただちに解放される訳ではない。)
422 名前:419 mailto:sage [2011/12/22(木) 03:15:34.82 ] >>420 >>421 ありがとう。もうちょっと、教えて。すまん。 >・regexp は一番内側の autorelease pool が解放されない限り有効。 つまり、メインスレッドでイベントループが進行しても、バックグランドで実行中のfuncのなかの (regexpが登録されている)内側のautoreleaseプールが解放されることはない? 自分でわざわざautorelease poolを作成していない場合の話として。 それは、メインスレッドで解放されるプールと、regexpの登録されているプールの場所が違うからか、 それとも、スコープを抜けないとregexpのrelease処理を実行しないからなのか、どっちなんだろう? #なんとなくメインスレッドが進行すると、1つしかないプールを空っぽにされそうなイメージがあるのだけど 早くARCに移ったほうがいい気がしてきた。
423 名前:デフォルトの名無しさん mailto:sage [2011/12/22(木) 04:37:47.37 ] ・autoreleasepoolはthread local ・main thread以外のthreadのpoolは自分でつくらないといけない
424 名前:419 mailto:sage [2011/12/22(木) 13:52:01.64 ] >>423 ありがとう。ここまで教えてもらって、やっと分かってきた。 ARCを使わない場合に、サブスレッドでNSAutoreleasePoolを自分で作らないといけないのは、以下の全部? (1)NSThread detachNewThreadSelector:@selector (2)self performSelector:@selector (3)GCD:dispatch_async (4)非同期通信:NSURLConnection connectionWithRequest:request delegate:delegate (1),(2)で、自分でプール管理しないといけないのは分かる。(3),(4)の場合、自動的にNSAutoreleasePoolを用意してくれるのかな? 質問のバックグラウンド処理は(4)の後のconnectionDidFinishLoadingでの処理なんだけど。
425 名前:デフォルトの名無しさん mailto:sage [2011/12/22(木) 14:00:35.91 ] Objective-CでCGI書けますか?
426 名前:デフォルトの名無しさん mailto:sage [2011/12/22(木) 14:10:37.24 ] 駆けます。
427 名前:デフォルトの名無しさん mailto:sage [2011/12/22(木) 14:12:53.04 ] ありがとうございます Hello WorldのCGIだけでも教えてください orz
428 名前:デフォルトの名無しさん mailto:sage [2011/12/22(木) 14:28:26.57 ] int main() { printf("Hello World\n"); }
429 名前:デフォルトの名無しさん mailto:sage [2011/12/22(木) 16:15:14.45 ] こんにちわ、はじめたばっかりでよくわからないんですが、xcode4.2で、外部ファイルはどうすればいいですか? 4.1以下はリソースフォルダの中に入れれば良いみたいですが、4.2で初めて触りだしたので、よくわかっていません。 ネット上にも情報少なく…。お願いします。
430 名前:デフォルトの名無しさん mailto:sage [2011/12/22(木) 16:20:41.98 ] スレチ
431 名前:デフォルトの名無しさん mailto:sage [2011/12/22(木) 16:36:58.80 ] >>424 「いけない」のは 1 だけ。 2: そもそもスレッド関係ない。-[NSObject performSelector:] は呼び出したスレッドでの実行。 performSelectorInBackground:withObject:のことをいっているのならば (1と同様に)自分で作らないといけない。 3: GCDのqueueがプールを用意しているから、自分では作らなくてもよい。 ただし、そのプール内のオブジェクトがいつ解放されるのかは保証がないので、 オブジェクトを大量に作成する場合などには自前で用意したほうがよいこともある。 4: これもスレッドは関係ない。 NSURLConnectionはスレッドではなくRunLoopによるイベント駆動型の非同期処理。 -[NSURLConnectionDelegate connectionDidFinishLoading:]は +[NSURLConnection connectionWithRequest:delegate:]を実行したのと同じスレッドで呼ばれる。
432 名前:419 mailto:sage [2011/12/22(木) 21:36:40.25 ] >>431 >2: そもそもスレッド関係ない。-[NSObject performSelector:] は呼び出したスレッドでの実行 >+[NSURLConnection connectionWithRequest:delegate:]を実行したのと同じスレッドで呼ばれる。 このあたりが、ごっちゃになってた。 丁寧に教えてくれて、ありがとう。かなり助かった。
433 名前:デフォルトの名無しさん [2011/12/24(土) 19:23:51.25 ] 高速列挙では順番が保証されないというのを見かけて気になってるのだけど、 以下のような単純なarrayやmutableArrayでも、高速列挙で順番が狂うことがあるの? こういう場合なら順番が狂うという例を教えてもらえないかな。 NSArray *array = [NSArray arrayWithObjects: @”One”, @”Two”, @”Three”, @”Four”, nil]; for(NSString *string in array) { NSLog(@"%@", string); } NSMutableArray *mutableArray = [NSMutableArray arrayWithArray:array]; [mutableArray addObject:@”Five”]; for(NSString *string in multableArray) { NSLog(@”%@”, string); }
434 名前:デフォルトの名無しさん mailto:sage [2011/12/24(土) 19:55:56.82 ] > 高速列挙では順番が保証されないというのを見かけて 何処で見かけたの?
435 名前:433 mailto:sage [2011/12/24(土) 20:19:16.08 ] >>434 ttp://d.hatena.ne.jp/watanata2000/20110104/1294108945 このブログの記事。なんか自分が勘違いしてるのかもしれない。
436 名前:デフォルトの名無しさん mailto:sage [2011/12/24(土) 20:58:19.47 ] 配列なら保証されてると思うけど、どうなんだろね。 developer.apple.com/jp/devcenter/ios/library/documentation/ObjC.pdf 「明確な順序を持つコレクションや列挙子(配列から派生したNSArrayインスタンスやNSEnumerator インスタンス)の場合、 列挙はその順序に従って行われるため、必要な場合は反復をカウントする だけでコレクション内を指す正しいインデックスが得られます。」 「For collections or enumerators that have a well-defined order―such as NSArray or NSEnumerator instance derived from an array― the enumeration proceeds in that order, so simply counting iterations will give you the proper index into the collection if you need it.」 詳解Objective-C2.0の2刷にも「配列の場合は先頭から順番」と書いてあるけど、 翻訳がミスってるのか、実装がおかしいか、何か勘違いがあるのか、最近変わったのかも。
437 名前:436 mailto:sage [2011/12/24(土) 21:10:34.19 ] そのサイトのコードを見ると for (UIScrollView *scrollView in self.scrollView.subviews) { と UIScrollView *scrollView = [self.scrollViews objectAtIndex:index]; だから、 高速列挙はsubviewsのviewをとってて、 もう一つはscrollViewsのオブジェクトを取得してるから、サイトに載せる時に書き間違えてなければ 高速列挙の方は for (UIScrollView *scrollView in self.scrollViews) { じゃないのかな。 subViewsがscrollViewsと同じかどうかはこれだけじゃわからないけど。
438 名前:デフォルトの名無しさん mailto:sage [2011/12/25(日) 07:09:32.06 ] >>436-437 ありがと。配列なら問題なさそうだけど、なんか気になるなあ
439 名前:デフォルトの名無しさん mailto:sage [2011/12/25(日) 17:47:58.73 ] 荻原本の第3版が出てた。ARC関連が追加っぽい 荻原本 amazon.jp/dp/4797368276
440 名前:デフォルトの名無しさん mailto:sage [2011/12/26(月) 00:43:31.85 ] 画面遷移するときのアニメーションで、『右から左方向にスライド』するプロパティが無いか探しています。 どこかのサンプルから拾ってきた画面遷移するメソッドなんですけど、 ソースに、いろいろプロパティを設定してみたのですが、その思うようなプロパティが見つからないです。 -(IBAction)showTableLight{ //使う変数 TLLightViewController *controller = [[TLLightViewController alloc] initWithNibName:@"TLLightViewController" bundle:nil]; //プロパティ色々 //controller.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal; //横回転フリップ //controller.modalTransitionStyle = UIModalTransitionStylePartialCurl; //ページ送り //controller.modalTransitionStyle = UIModalTransitionStyleCrossDissolve; //じわじわとみえてくる表示 //controller.modalTransitionStyle = UIModalTransitionStyleCoverVertical; //下から上方向にスライド表示 //controller.modalPresentationStyle = UIModalPresentationCurrentContext; //下から上方向にスライド表示 //controller.modalPresentationStyle = UIModalPresentationFormSheet; //下から上方向にポップアップでスライド表示 //controller.modalPresentationStyle = UIModalPresentationFullScreen; //下から上方向にスライド表示(画面全体) //controller.modalPresentationStyle = UIModalPresentationPageSheet; //下から上方向にスライド表示(ページ全体) //画面遷移 [self presentModalViewController:controller animated:YES]; //解放 //[controller release]; //xcode3迄 controller = nil; }
441 名前:デフォルトの名無しさん mailto:sage [2011/12/26(月) 00:53:34.37 ] スレチ
442 名前:デフォルトの名無しさん mailto:sage [2011/12/26(月) 17:52:06.23 ] >>438 そのブログが阿呆なだけ
443 名前:デフォルトの名無しさん mailto:sage [2011/12/26(月) 17:55:45.72 ] 何でWindowsに開発環境を用意してくれないのですか? QuickTimeというksみたいなものはWindowsにあるのに何でですか?
444 名前:デフォルトの名無しさん mailto:sage [2011/12/26(月) 18:35:17.44 ] >>443 GNUStep
445 名前:デフォルトの名無しさん mailto:sage [2011/12/26(月) 18:44:11.61 ] >>443 MSがVisualStudio for Mac出してWindowsPhoneの開発ができるようになったら俺も賛同するよ
446 名前:デフォルトの名無しさん mailto:sage [2011/12/26(月) 18:56:46.83 ] >>445 ここに書くんだから「Appleは」なわけがなでしょ こんな所にそんなこと書いても何の意味もないじゃん まさか >443 はそこまで馬鹿じゃないでしょ?
447 名前:デフォルトの名無しさん mailto:sage [2011/12/28(水) 00:07:55.83 ] >>445 普通にVSなんていらねえわな
448 名前:デフォルトの名無しさん mailto:sage [2011/12/28(水) 02:23:20.52 ] 2005くらいのVSはけっこう好きだな。 最近のはVSもXcodeも同じくらいイライラする。
449 名前:デフォルトの名無しさん mailto:sage [2011/12/28(水) 10:21:24.68 ] >>446 日本語で
450 名前:デフォルトの名無しさん mailto:sage [2011/12/28(水) 10:34:05.33 ] >>449 要点だけにすると >443 スレ違いだボケ
451 名前:デフォルトの名無しさん mailto:sage [2011/12/28(水) 11:02:59.02 ] ocの開発環境の話題なのにスレ違いでもないと思うけど
452 名前:デフォルトの名無しさん mailto:sage [2011/12/28(水) 11:39:30.02 ] ここは言語のみでしょ。
453 名前:デフォルトの名無しさん [2011/12/28(水) 12:00:48.56 ] Cocoa等のフレームワークの話ならまだしも開発環境の話はすれ違いでしょう フレームを望んでるなら釣れやすい新板の、Xcodeスレがあるし
454 名前:デフォルトの名無しさん mailto:sage [2011/12/28(水) 15:50:43.04 ] Cocoaどこの細道じゃ
455 名前:デフォルトの名無しさん mailto:sage [2011/12/29(木) 19:03:23.65 ] 知らん
456 名前:デフォルトの名無しさん [2011/12/30(金) 22:03:06.26 ] perlみたいに、NSString *strのなかに直接文字列を放り込む方法ってない? ダブルクオートを逐一変換するのは面倒なので。 $str =<<EOF; [生文字列] EOF NSString *str = "[ダブルクオートを変換した文字列]";
457 名前:デフォルトの名無しさん mailto:sage [2011/12/30(金) 22:08:33.33 ] >>456 ない。
458 名前:デフォルトの名無しさん mailto:sage [2011/12/30(金) 22:52:24.85 ] その内 C++11 に導入された raw string リテラルも使えるようになるんじゃ
459 名前:456 mailto:sage [2011/12/31(土) 00:51:50.38 ] >>457 ありがと
460 名前:デフォルトの名無しさん mailto:sage [2011/12/31(土) 02:04:00.13 ] MuchaSukebeObject Class reference MSPanty Class MSObject / MSGoods / MSPanty - Example - MSPanty *panty = [[MSPanty alloc]initWithPantyStyle:bikiniStyle]; panty.color = [MSColor romancePinkColor ]; panty.material = [MSMaterial materialWithsatin:0.6 silk:nil cotton:nil nylon:0.2 polyester 0.2 mesh:NO]; panty.size = smallSize; panty.smell = [MSSmell lightCheeseSmell]; panty.stainOfCrotch = vaginalDischargeWithBrown; [self.view addSubview:panty];
461 名前:デフォルトの名無しさん mailto:sage [2011/12/31(土) 02:43:29.78 ] viewかよ!!
462 名前: 【大吉】 【569円】 mailto:sage [2012/01/01(日) 06:27:36.32 ] !
463 名前:デフォルトの名無しさん mailto:sage [2012/01/01(日) 11:10:11.78 ] >>461 あああ悔しー CもObjective-Cも読めないー 面白さを理解したいー こんな風にツッコミたいー
464 名前:デフォルトの名無しさん mailto:sage [2012/01/01(日) 15:12:25.87 ] >>460 こういう例とかセンスで本とかチュートリアル出してくれたら 習得が早いんじゃないかと真剣に思った。
465 名前:デフォルトの名無しさん mailto:sage [2012/01/01(日) 16:33:34.64 ] キモイ
466 名前:デフォルトの名無しさん [2012/01/01(日) 22:46:34.28 ] 一般論として、(1)よりもゾーンを使う(2)のほうが動作は速い? 速度が速くなるのは、インスタンスのメンバ変数を頻繁に呼び出す場合? (1)receivedData = [[NSMutableData alloc] init]; commentArray = [[NSMutableArray alloc] init]; (2)receivedData = [[NSMutableData allocWithZone:[self zone]] init]; commentArray = [[NSMutableArray allocWithZone:[self zone]] init];
467 名前:デフォルトの名無しさん mailto:sage [2012/01/02(月) 00:14:14.29 ] >>466 ゾーンなんて使ったことないし、普通は使う必要ないと思ってる。
468 名前:デフォルトの名無しさん mailto:sage [2012/01/02(月) 01:25:19.55 ] NSCreateZone()使ってゾーンを確保してページングが起こっても関連があるもの全部がオンメモリになるようにインスタンスを的確に確保すれば速くなるかもね
469 名前:466 mailto:sage [2012/01/02(月) 05:16:50.75 ] >>467-468 なるほど。なんとなく感じが分かった。ありがと。
470 名前:デフォルトの名無しさん [2012/01/03(火) 04:41:25.22 ] NSRegularExpressionOptionsに NSRegularExpressionCaseInsensitive, NSRegularExpressionDotMatchesLineSeparators の両方を設定するは、どうやったらできる? NSRegularExpressionOptions options = NSRegularExpressionCaseInsensitive; NSRegularExpression* regex = [NSRegularExpression regularExpressionWithPattern:regexString options:options error:&error];
471 名前:デフォルトの名無しさん mailto:sage [2012/01/03(火) 06:09:54.00 ] 論理和
472 名前:デフォルトの名無しさん mailto:sage [2012/01/03(火) 11:50:46.23 ] まあ、いまなら普通に足してもいいけど
473 名前:デフォルトの名無しさん mailto:sage [2012/01/03(火) 12:25:43.40 ] >>470 NSRegularExpressionOptions options = NSRegularExpressionCaseInsensitive | NSRegularExpressionDotMatchesLineSeparators; >>471 論理和って普通 || を指すのでは? wikipedia によれば | は「ビット単位OR」らしい。 >>472 それは嫌。
474 名前:デフォルトの名無しさん mailto:sage [2012/01/03(火) 15:30:42.98 ] >>473 ORは論理和。ビット幅など関係ない。普通は|を意味するが||も含むと思う。 ただ条件式での優先度が違うでしょ。 >typedef NSUInteger NSMatchingOptions; まあ足してもいいな。
475 名前:デフォルトの名無しさん mailto:sage [2012/01/03(火) 15:51:11.65 ] >>474 || にはビット幅は関係ないけど、| には関係あるよ。 で、この手の演算には + や - ではなく、ちゃんと | や & を使うべき。 A | B で A と B の同じビットが立ってたら + だと違う結果になるから。
476 名前:デフォルトの名無しさん mailto:sage [2012/01/03(火) 16:05:11.67 ] >>475 >>473 の >論理和って普通 || を指すのでは? に関しての見解も聞かせてくれよ。
477 名前:デフォルトの名無しさん mailto:sage [2012/01/03(火) 16:35:28.82 ] >>474 >>typedef NSUInteger NSMatchingOptions; >まあ足してもいいな。 今なら普通に足してもいいってのはちゃんとオプションの今の値を見て書いたんだよ。 型は関係ない そのうち普通に足すとダメになるかもだし
478 名前:470 mailto:sage [2012/01/03(火) 16:59:34.26 ] >471-477 ありがとう。
479 名前:デフォルトの名無しさん mailto:sage [2012/01/04(水) 03:26:05.31 ] UIlabelのpositionの取得方法ってありますか?
480 名前:デフォルトの名無しさん mailto:sage [2012/01/04(水) 07:27:16.65 ] >>479 positionってframeとかboundsの事か? プロパティで(もちろんメッセージ送っても)取れるけどスレが微妙に違うな。
481 名前:デフォルトの名無しさん mailto:sage [2012/01/04(水) 09:00:23.18 ] >>479 Cocoaスレでも、同じこと聞いてたひとかえ? こっち行ってみな。 [SDK]iPhoneアプリ開発初心者質問箱20[touch][iPad] anago.2ch.net/test/read.cgi/mac/1321865528/
482 名前:デフォルトの名無しさん mailto:sage [2012/01/04(水) 12:50:28.01 ] >>480 ,481 レスありがとうございます。 移動してみます。
483 名前:デフォルトの名無しさん mailto:sage [2012/01/05(木) 05:38:28.22 ] この言語仕様が汚いから変えて欲しいな シンプルにたのむぜ
484 名前:デフォルトの名無しさん mailto:sage [2012/01/05(木) 06:13:35.78 ] 字面は汚いと思う
485 名前:デフォルトの名無しさん mailto:sage [2012/01/05(木) 14:01:56.09 ] 了解で〜す
486 名前:デフォルトの名無しさん mailto:sage [2012/01/05(木) 22:57:19.00 ] >>483 むしろ、純粋にCをOOP化してる言語な気がするけどなぁ
487 名前:デフォルトの名無しさん mailto:sage [2012/01/05(木) 23:25:49.20 ] C++と比較すればなんて綺麗な言語仕様でしょう
488 名前:デフォルトの名無しさん mailto:sage [2012/01/05(木) 23:26:57.01 ] うむ
489 名前:デフォルトの名無しさん mailto:sage [2012/01/05(木) 23:31:36.94 ] 第1034019283次OOP宗教戦争勃発か…
490 名前:デフォルトの名無しさん mailto:sage [2012/01/05(木) 23:48:55.47 ] いい加減、SmalltalkにCをインラインに書く仕様がした方といいと思うけどな。 XCode4.0以降、実装は実質そうなっているぽいが?
491 名前:デフォルトの名無しさん mailto:sage [2012/01/05(木) 23:52:24.24 ] たとえば、今のObjCのどんなとこがいやなの?
492 名前:デフォルトの名無しさん mailto:sage [2012/01/06(金) 01:06:08.31 ] (ほとんどの言語がそうだけど)複数の返値を認めてほしいなあとか、思った。
493 名前:デフォルトの名無しさん mailto:sage [2012/01/06(金) 01:13:19.27 ] 面倒がらずに構造体 エラーとか、別の意味のものを複数ならポインタで十分では
494 名前:デフォルトの名無しさん mailto:sage [2012/01/06(金) 01:18:18.31 ] メソッドに複数の戻り値を指定できると便利かもしれんけど、 もし仮にそういう仕様を実現する場合、戻り値の受け記述は =だけでは表現できなくなっちゃうね そう言う意味では、構造体を戻り値にした方が確かにしっくり来る
495 名前:493 mailto:sage [2012/01/06(金) 01:25:07.91 ] luaなんかはこんな感じで=だけで複数戻り値できるけどね x, y = func(); function func() return 1, 2; end
496 名前:デフォルトの名無しさん mailto:sage [2012/01/06(金) 01:27:11.79 ] >>495 なんということだ、その手があったか 便利すぎる。。 ところでluaって言語初めて聞いた。。
497 名前:デフォルトの名無しさん mailto:sage [2012/01/06(金) 01:30:17.14 ] PHPみたいに、list($a,$b,$c)=func(); じゃ駄目? aString, bString, cString = [self getTripleStringWithIntA:aInt, bInt:bInt cInt:cInt]; とか出来ると凄く記述が楽になるんだけど。
498 名前:デフォルトの名無しさん mailto:sage [2012/01/06(金) 01:34:31.03 ] 複数戻り値をもつ言語って結構あるんだな 逆に、カンマ区切りで複数戻り値表記ができる場合の 弊害って何かあんのかね…。
499 名前:493 mailto:sage [2012/01/06(金) 01:40:03.49 ] >>497 そういう場合は大抵abcに関係があるだろうから、 構造体や辞書で表してもスッキリする気がする。 意味がバラバラなら、今度は順番を気にする必要が出てくる。 これは戻り値だけじゃなくて引数にも言えることだけど、 Objective-cはラベルが付いてるから。 だから、できることがそんなにメリットになるのかな。 できたらそれはそれで、使うだろうけど。
500 名前:デフォルトの名無しさん mailto:sage [2012/01/06(金) 01:43:57.01 ] >>499 確かにObjective-Cのメソッドメッセージの表現は、 各引数の意味とメソッド名をかねられる、まれにみる秀逸表現なのに、 複数戻り値にすることによって、結局、 「あれ?2番目の戻り値ってなんだっけ?」 的なことになっちゃうな
501 名前:デフォルトの名無しさん [2012/01/06(金) 02:00:48.52 ] [self age];
502 名前:デフォルトの名無しさん mailto:sage [2012/01/06(金) 02:14:04.07 ] 言語仕様はともかく字面は高度に汚いと思う。
503 名前:デフォルトの名無しさん mailto:sage [2012/01/06(金) 02:15:06.27 ] >>502 どの辺が?
504 名前:デフォルトの名無しさん mailto:sage [2012/01/06(金) 02:15:30.59 ] Scheme で多値は割と便利だけど、Obj-Cで語るのはC言語に多値が導入されてからにしてくれ。
505 名前:デフォルトの名無しさん mailto:sage [2012/01/06(金) 02:16:04.40 ] >>504 たすかに Obj-CはCのスーパーセットだからね
506 名前:デフォルトの名無しさん mailto:sage [2012/01/06(金) 02:19:55.25 ] Cでできる記述は、全てObjective-Cコード上でも使える これが強みじゃない? Cがわかってる人には、逆に入りやすい言語だと思うのよObj-C
507 名前:デフォルトの名無しさん mailto:sage [2012/01/06(金) 02:22:57.00 ] 唐突に何今更なことを
508 名前:デフォルトの名無しさん mailto:sage [2012/01/06(金) 02:24:42.53 ] メソッドメッセージコールと関数コールが共存してるソース見るとObj-Cらしさを感じる オブジェクトに対する操作とそれ以外の操作の表現が明確に違うのは、慣れるとわかりやすい
509 名前:デフォルトの名無しさん mailto:sage [2012/01/06(金) 02:26:01.37 ] >>503 特に嫌いなのはインデントだな ずーっと右端の方で固まって、左側がすっかすかになるのがヤダ。
510 名前:デフォルトの名無しさん mailto:sage [2012/01/06(金) 02:28:01.58 ] >>509 それ、Obj-Cに限った話か?
511 名前:506 mailto:sage [2012/01/06(金) 02:32:05.66 ] >>507 す、すまぬ。。