我是从 TableViewCell 派生的。当我查询有关索引路径的表视图时,它返回一个 UITableViewCell。我如何确定该对象是否是我的自定义类型“CustomCell”之一?
问问题
690 次
4 回答
3
if ([cell isKindOfClass:[CustomCell class]]) {
[(CustomCell*)cell customCellMethod];
}
于 2010-04-08T06:07:06.037 回答
2
if ([cell isKindOfClass:[CustomCell class]]) {
// ...
}
于 2010-04-08T06:07:52.720 回答
1
与面向对象的设计一样,尝试使用实例的类标识是一种代码味道,应该引起注意。你到底想用你的自定义单元做什么?也许有人可以提出更好的方法。
@protocol
无论如何,依赖接口( Objective-C 中的一个)比依赖类更好的设计,因为它有助于解耦你的设计。使用您需要的相关 API定义 a@protocol
并让您CustomCell
实现该协议。然后,您可以在您的代码中测试:
if([cell conformsToProtocol:@protocol(MyCellProtocol)]) {
//...
}
而不是测试类身份。
如果你只需要一个方法,你可以使用[cell respondsToSelector:@selector(myMethod)]
.
于 2010-04-08T06:33:15.323 回答
0
实际上,您可以在这里使用两种方法。您可能想要的是isKindOfClass:
,但是调用了另一种方法,并且仅当接收者是提供的类的实例而不是子类的实例时isMemberOfClass:
才会返回。YES
例如,如果DerivedClass
是 的子类BaseClass
,那么以下是每个方法的结果:
BOOL isKind = [aDerivedInstance isKindOfClass:[BaseClass class]]; // YES
BOOL isMember = [aDerivedInstance isMemberOfClass:[BaseClass class]]; // NO
于 2010-04-09T04:32:26.770 回答