在Objective-C中,哪种编码更好?id myObj <MyProtocol> vs if([obj class] conformsToProtocol:@protocol(MyProtocol))
//版本#1
id obj<MyProtocol>;
[obj myMessage];
//版本#2
id obj;
if([[obj class] conformsToProtocol:@protocol(MyProtocol)])
[obj myMessage];
出于某种原因,我看到一个版本的示例代码,但对我来说第2版似乎更安全。 如果在运行时从一个不符合协议MyProtocol的通用标识中分配obj,会发生什么情况?
对选择器的响应也可以是开发的一个很好的补充。你创建了一个存根对象,并且在对选择器的响应错误的情况下有一些消息指出它是一个存根。这样,当你运行你的代码时,你会得到一个完整的东西列表。 – Bergasms 2013-03-11 23:32:44