0

これがケースです。メソッドの最後で nil を返すのを忘れていたため、次のコードで不正なアクセス エラーが発生しました。

- (NSString*) testWithRet{
    NSString* ret = @"js";
    //return ret;
}

...

NSString* var = [obj testWithRet];
//can I check here to prevent the bad access below?
NSLog(@"%@", var); // bad access here

私の質問は、不正なアクセスが発生する前にチェックを行うことはできますか?

「var」を nil および NULL に対してチェックしようとしましたが、失敗しました。

ありがとう。

4

2 に答える 2

3

いいえ、そのようなチェックを行うことはできません。値を返す関数を終了させることreturn未定義の動作です。そのような場合に「返される」値は、まあ、未定義です。

Xcode の警告に注意し、それらをすべて修正する必要があります。この特定のケースでは、次のようなメッセージが表示されます。

制御が非 void 関数の終わりに達する

非 void 関数の閉じ中かっこの行。returnこれは、不足しているコードを追加するための合図となるはずです。

于 2013-02-18T10:59:36.847 に答える
-1

これをチェックしてください:

NSString* var = [obj testWithRet];
//can I check here to prevent the bad access below?
if([var isKindOfClass:[NSString class]]) {
    NSLog(@"%@", var); // bad access here
}
于 2013-02-18T11:01:05.140 に答える