【发布时间】:2010-11-22 23:27:34
【问题描述】:
我在 iPhone 上使用 Objective-C,需要知道“类”是否继承自“NSObject”。
我尝试检查它是否响应 NSObject 选择器:
bool success = [myClass respondsToSelector:@selector(class)];
但你可以猜到发生了什么......它甚至没有响应“respondsToSelector:”所以它抛出了一个“不实现 doesNotRecognizeSelector:”异常。
我试图捕获该异常,但似乎无法使用 @try-@catch 捕获它。
有什么想法吗?
【问题讨论】:
-
我认为更好的问题是您如何处理这些不继承自 NSObject 的类。除了协议之外应该没有任何其他内容。
-
你的意思是
@selector(class)。我认为 SDK 中没有任何响应+class:的内容。 -
我正在创建一个库来简化序列化,这意味着我正在处理我没有创建的类。在我可以使用它之前,我至少需要验证一个类是否符合 NSObject 协议 - 否则会引发“无法捕获的异常”(如下面的 Tommy 所述)。
-
@Dave DeLong:我有点犹豫,因为 NSProxy 到 NSObject 的行为就像 NSObject。它不会产生您需要知道您拥有什么样的对象才能知道您需要发送什么消息来询问它是什么类型的对象的问题。
标签: iphone objective-c reflection nsobject