我有一个需要发送消息的Objective-C类中的指针。指针可能是任何东西,所以我需要确保它在发送消息之前会响应我的消息。下面是我用做检查的功能:如何知道指针是否是NSObject?
int delegatePreparedForSelector(id delegate, SEL aSelector) {
if (delegate
&& [delegate isKindOfClass:[NSObject class]]
&& [delegate respondsToSelector:aSelector]) {
return YES;
}
return NO;
}
的问题是,有时委托指针是struct objc-object *
,我得到一个坏EXC_BAD_ACCESS
访问错误,当我发送isKindOfClass
消息。
是否有更好的测试我应该用来确定委托人是否会回复我的消息?
这是问题所在。当委托被解除分配并设置为'nil'时,它的类型被设置为'struct objc_object *'我在调试器中看到的。 – kubi 2009-10-05 21:22:43
如果委托人为零,则上述情况不会崩溃.... – bbum 2009-10-05 22:11:43
零与解除分配 – slf 2009-10-06 13:33:01