在 Objective-C 中,哪种编码方式更好?
// 版本 #1
id obj<MyProtocol>;
[obj myMessage];
// 版本 #2
id obj;
if( [[obj class] conformsToProtocol:@protocol(MyProtocol)] )
[obj myMessage];
出于某种原因,我在示例代码中看到了版本 1,但对我而言,版本 2 似乎更安全。如果在运行时从不符合协议 MyProtocol 的通用 id 分配 obj 会发生什么?