我正在尝试检查某个类是否已在iOS中实例化。如果已经实例化,那么我想释放它。
类似
for (UIView* views in self.view.subviews) {
if ([views isKindOfClass:[CCGLView class]])
[views removeFromSuperview];
}
因为那时我已经知道它是某种类型的UIViews,但我该如何检查其他类?
答案 0 :(得分:0)
我正在尝试检查是否已在iOS中实例化了一个类。
你不需要。 Objective-C允许您在没有任何不良副作用的情况下发送消息。此外,子视图不允许为nil,因为它们被添加到内部NSMutableArray中,而NSMutableArray又不允许将nil指针添加到自身。
因为那时我已经知道它是某种类型的UIViews,但我该如何检查其他类?
如果你想要发布每个UIView(和相关的子类),你不需要在比较中具体,因为基类(UIView)是声明removeFromSuperview的基类,反过来,解决了问题的解除分配部分。当视图从其超级视图中删除时,它的引用计数减少一个。
现在我有更多的背景,你所要求的是微不足道的。如果您使用ARC,此处的代码段将找到CustomClass
类型的所有对象,然后将它们设置为nil。
for (NSObject *object in self.someCollection) {
if ([object isKindOfClass:[CustomClass class]])
object = nil;
}
如果您正在使用MRC(如果您正在使用,那么您的错误是什么?),那么您实际应该检查它是否为活动实例。
for (NSObject *object in self.someCollection) {
if ([object isKindOfClass:[CustomClass class]] && object != nil) {
[object release];
}
}