如何捕获发送到实例异常的无法识别的选择器?

Str*_*boy 4 objective-c ios5

经过一段时间后,我发现无法识别的选择器被发送到实例异常.当我得到这个,我想跳过它,我的应用程序应该工作.

但是我不知道该怎么抓.因为这没有抓住:

@property(nonatomic,retain) UIButton *button;
    @try{

       if(button.currentBackgroundImage == nil){//rises exception 
    }
    }@catch(NSException *e){
}
Run Code Online (Sandbox Code Playgroud)

我怎么能处理这个?

谢谢.

Chr*_*hey 6

我经常使用和查看的技术是:检查对象是否响应选择器,而不是捕获异常:

if(![button respondsToSelector:@selector(currentBackgroundImage)] || button.currentBackgroundImage == nil) {
  // do your thing here...
}
Run Code Online (Sandbox Code Playgroud)

  • 是的,这是正确的.你希望尽可能避免异常^^. (3认同)
  • 不,可能不是,但是你的按钮在某个地方超出范围并被取消分配.这是一个不同的问题. (2认同)