初学者如何在Cocoa编程(特别是iOS)中练习内省?换句话说,我应该在我的练习代码中创建什么样的场景,这将迫使我使用像“isKindOfClass”这样的东西?
对此问题的抽象性质表示感谢和道歉。我只是不能说得更好。
答案 0 :(得分:0)
在Cocoa(Mac)和Cocoa Touch(iOS)中,使用respondsToSelector:
或conformsToProtocol:
通常比isKindOfClass:
更好。
我能想到使用isKindOfClass:
的最好的原因是你正在阅读属性列表或JSON数据,需要确定它的根对象是什么类型的对象(或者,如果你是偏执狂,其中的任何其他对象)。您可以在断言中执行此操作,假设您愿意捕获异常(如果用户提供了该文件,您最好提出错误,而不是让异常终止应用程序)。
其他两个通常与委托协议一起使用。在delegate属性的setter中,您可以声明新委托符合委托协议。最常见的情况是,如果协议中的任何方法都是可选的,您将需要在尝试发送之前检查您的委托是否实际响应了该消息。
如果您希望刻意创建一个能够满足所有这些情况的应用程序,我建议使用插件架构编写基于文档的Cocoa应用程序。使用协议指定插件API,并在应用程序端使用conformsToProtocol:
和respondsToSelector:
检查。实现一个处理属性列表格式的文档的插件,并使用isKindOfClass:
验证它读入的属性列表是否符合预期。