我是从TableViewCell派生的。当我查询有关索引路径的表视图时,它返回一个UITableViewCell。我如何找到这个对象是我的自定义类型“CustomCell”之一?Objective C如何查询对象是否属于某个类
4
A
回答
3
if ([cell isKindOfClass:[CustomCell class]]) {
[(CustomCell*)cell customCellMethod];
}
2
if ([cell isKindOfClass:[CustomCell class]]) {
// ...
}
1
一如往常,在面向对象的设计,尝试使用实例的阶级身份是一个代码味道,应该提高的标志。你想要用自定义单元格做什么?也许有人可以提出更好的方法。
不管怎样,依赖于接口(Objective-C中的@protocol
)的设计要好得多,因为它有助于解耦您的设计。用您需要的相关API定义@protocol
,并让CustomCell
实现该协议。在你的代码中,你可以测试:
if([cell conformsToProtocol:@protocol(MyCellProtocol)]) {
//...
}
而不是测试类身份。
如果您只需要一种方法,您可以使用[cell respondsToSelector:@selector(myMethod)]
。
0
实际上有两种方法可以在这里使用。您可能需要的是isKindOfClass:
,但还有另一种方法称为isMemberOfClass:
,如果接收方是提供的类的实例,而不是子类的实例,则这将只返回YES
。
例如,如果DerivedClass
是BaseClass
一个子类,那么这里的每个方法的结果:
BOOL isKind = [aDerivedInstance isKindOfClass:[BaseClass class]]; // YES
BOOL isMember = [aDerivedInstance isMemberOfClass:[BaseClass class]]; // NO
相关问题
- 1. c#如何检查对象是否属于某种类型
- 2. 如何检查外键对象是否属于某种类型
- 3. 如何检查两个对象是否属于同一个类?
- 4. 如何检查某个对象是否为某种类型
- 5. Objective-C:如果一个对象属于一个类,这是否意味着对象不是nil或null?
- 6. Objective C如何检查并查看对象是否被选中?
- 7. 如何查找某个类是否存在对象
- 8. 检查一个对象是否属于一个通用类
- 9. 如何判断某个类是否继承自NSObject(Objective-C)
- 10. 如何检查一个对象是否为类c的类型?
- 11. 如何检查对象是否是某种类型的数组?
- 12. 如何检查一个对象的属性等于某个值?
- 13. 如何检查对象是否具有某些方法/属性?
- 14. objective-c检查是否忘记了某个/某些版本
- 15. 如何检查某个对象是否为某种类型的数组
- 16. 如何查找某个类的对象
- 17. 如何检查某个类的注释是否属于特定类别?
- 18. 无法确定某个对象的某个属性是否大于该对象的另一个属性
- 19. 如何检查两个对象在Actionscript中是否属于同一类型?
- 20. 检查一个属于某个对象的数组是否为空
- 21. 如何检查一个类(元类对象)对象是否与另一个类对象相等
- 22. Objective-C检查两个对象是否碰撞
- 23. 如何检查NSSet是否包含某种类的对象?
- 24. Android sqllite,查询属于另一个对象属性的对象
- 25. Mediawiki-PHP:检查一篇文章是否属于某个类别
- 26. 如何检查一个类或CFType是否可用Objective-C
- 27. 如何检查对象是否等于同一个类的新对象?
- 28. 如何查看某个类是否有属性?
- 29. 如何检查某个类型是否标有属性?
- 30. 如何查找对象基于ArrayList中的某个属性并编辑对象
我认为用例是在这种情况下,很清楚。特别是用ObjectiveC打字的方式。你有一个表格视图,里面填充了'UITableViewCell'各个子类的单元格,并且你要求''tableView cellForRowAtIndexPath:indexPath]'。该table view方法只承诺返回一个'UITableViewCell'的实例,唯一的方法就是知道你是否有该单元的一个子类,以测试它的类。你可以创建一个协议,但是你会把大部分的自定义单元方法放在里面,使得事情变得更加冗长,看起来没什么好处。 – 2010-04-08 16:50:09