Quantcast
Channel: OKWAVE 最新質問([技術者向] コンピューター/205)【本日】
Viewing all articles
Browse latest Browse all 38062

Objective-c 3項演算子で代入できない

$
0
0
Objective-c 2.0で3項演算子を用いてプロパティに代入演算子で代入を行おうとすると Expression is not assignableエラーになります。 なぜでしょうか? 1.エラーになる例 UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, 100, 100)]; BOOL flag = YES; flag == YES ? label.text = @"a" : label.text = @"b"; // ここでエラー 2.3行目をsetTextメッセージに置き換えるとエラーは出なくなります。 flag == YES ? [label setText:@"a"] : [label setText:@"b"]; // これはOK 3.if文に置き換えてもエラーは出ません。 if(flag == YES) label.text = @"a"; // これもOK else label.text = @"b"; // これもOK 1.と2.の書き方は等価だと思っていたのですが、どうやら等価ではないということは わかりました。では、どう違うのかというと、そこまでの理解には自力では至れませんでした。 1.だとnot assignableなのに3.だと問題ない理由もわかりません。 何か理解のためのヒントをいただけないでしょうか? よろしくお願いします。 環境: XCode Version 4.3.2 (4E2002) Apple LLVM Compiler 3.1

Viewing all articles
Browse latest Browse all 38062

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>