Rob*_*ert 6 cocoa cocoa-touch objective-c
例如,如果存在'handle all'类型方法...
if ([obj isKindOfClass:class1]) {
// ...
} else if ([obj isKindOfClass:class2]) {
// etc..
Run Code Online (Sandbox Code Playgroud)
这是不好的做法吗?是否有更简洁的替代方案或更好的方法来构建代码?
运行时,可读性,可维护性或任何东西都有缺点吗?
每当某些事物被认为是好/坏的做法时,它或多或少都是主观的.当做某事本质上是正确/错误时,它或多或少是客观的.
isKindOfClass:是检查类继承的有用方法.它回答了唯一的问题,"是一个类的对象是(给定类的一个子类)?".它没有回答任何其他问题,例如"这个对象以自己的方式实现该方法吗?" 或"我可以将对象用于X或Y吗?".如果isKindOfClass:按预期使用,则不会有任何问题.毕竟,在动态类型语言中,您应该有工具来提取有关对象的元信息.isKindOfClass:只是可用的工具之一.
某些物品可能与他们的课程有关,这一事实不应该让你失望.他们只是将自己伪装成另一个阶级的对象,而不会破坏任何东西.如果这不会破坏任何东西,我为什么要关心?
最重要的是,您应该始终记住使用正确的工具用于任何特定目的.例如,isKindOfClass:无法替代respondsToSelector:或conformsToProtocol:.
| 归档时间: |
|
| 查看次数: |
3640 次 |
| 最近记录: |