2011-08-05 11 views
0

このエラーはなぜ発生しますか?式結果未使用Xcodeのエラー

if(appDelegate.lastLevelIndex!=0) { 
     [self.view addSubview:creditView]; 
     NSString *level=[NSString stringWithFormat:(@"%d",appDelegate.lastLevelIndex)]; 
     label.text=level; 
     appDelegate.lastLevelIndex=0; 
    } 

また、元のエラーのためクラッシュすることがあります。

答えて

4

ここで括弧を削除します。

に結果の
NSString *level=[NSString stringWithFormat:(@"%d",appDelegate.lastLevelIndex)]; 
             ^       ^

NSString *level=[NSString stringWithFormat:@"%d",appDelegate.lastLevelIndex]; 

カンマで区切られた引数のリストを期待stringWithFormat:方法を。最初の引数は、残りの引数値が代入されるテンプレートとして機能する書式文字列です。

ただし、カッコを使用すると、括弧内に含まれる式を評価した結果、単一の引数をstringWithFormat:に渡しています。拡張によって

Cで
(@"%d",appDelegate.lastLevelIndex) 
    ^

とは、Objective-Cのcommaによって分離された式のリストは、左から右に評価され、結果のタイプ及び値は、右のオペランドの型と値です。

したがって、NSString *が必要なstringWithFormat:メソッドには、唯一の引数としてappDelegate.lastLevelIndexという値が整数として渡されます。したがって、クラッシュ。 「Expression Result Unused」警告は、左の式@"%d"が効果がないためです。

関連する問題