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

我的问题是,我可以在错误访问发生之前进行任何检查吗?

我试图对照 nil 和 NULL 检查“var”但失败了。

谢谢。

4

2 回答 2

3

不,你不能做任何这样的检查:让一个返回值的函数没有结束return未定义的行为,在这种情况下,“返回”的值是未定义的。

你需要注意 Xcode 中的警告,并修复它们。在这种特殊情况下,您应该收到一条消息,说明

控制到达非空函数的结尾

在非 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 回答