我有一個需要發送消息的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