如何在Objective C中获取nullpointer异常



众所周知,在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];

最新更新