众所周知,在ObjectiveC中,我们可以向nil对象发送消息,并且不会抛出nullpointer异常。但这也使得一些bug很难被发现。那么,当我们像这样在调试中执行代码时,有没有办法让程序抛出nullpointer异常或崩溃呢。
NSString * s = nil;
int n = [s intValue];
我希望这段代码能让程序崩溃,这样我就能更容易地发现这个错误。
您可以对要使用的每个对象使用安全检查方法。
我更喜欢NSObject类的类别
@implementation NSObject (Utility)
+(id)checkSafe:(id)obj{
if( obj == nil){
[NSException raise:@"null pointer" format:@"Reason"];
}
return self;
}
@end
现在,您可以在任何nil对象中使用此方法,如下所示。我使用了简单的NSObject本身。沙子用复制的方法使它崩溃。
NSObject* valuenil = nil;
NSObject* valuCopy = [[NSObject checkSafe:valuenil] copy];