id myObj <myprotocol> vs if([obj class] conformsToProtocol:@protocol(MyProtocol))</myprotocol>

时间:2013-03-11 23:19:49

标签: ios objective-c

在Objective-C中,哪种代码更好?

//版本#1

id obj<MyProtocol>;
[obj myMessage];

//版本#2

   id obj;
   if( [[obj class] conformsToProtocol:@protocol(MyProtocol)] )
       [obj myMessage];

出于某种原因,我在示例代码中看到了第一版,但对我来说版本2似乎更安全。 如果obj是从运行时不符合协议MyProtocol的通用ID分配的,会发生什么?