我正在尝试检查一个类是否已在 iOS 中实例化。如果它已被实例化,那么我想释放它。
就像是
for (UIView* views in self.view.subviews) {
if ([views isKindOfClass:[CCGLView class]])
[views removeFromSuperview];
}
因为那时我已经知道它是某种 UIViews,但是我如何检查其他类呢?
我正在尝试检查一个类是否已在 iOS 中实例化。如果它已被实例化,那么我想释放它。
就像是
for (UIView* views in self.view.subviews) {
if ([views isKindOfClass:[CCGLView class]])
[views removeFromSuperview];
}
因为那时我已经知道它是某种 UIViews,但是我如何检查其他类呢?
我正在尝试检查一个类是否已在 iOS 中实例化。
你不需要。Objective-C 允许你在没有任何副作用的情况下发送 nil 消息。此外,子视图不允许为 nil,因为它们被添加到内部 NSMutableArray 中,这反过来又不允许将 nil 指针添加到自身。
因为那时我已经知道它是某种 UIViews,但是我如何检查其他类呢?
如果您希望发布每个 UIView(和相关的子类),则不需要在比较中如此具体,因为基类 (UIView) 是声明 removeFromSuperview 的类,这反过来又解决了释放问题你问题的一部分。当一个视图从它的父视图中移除时,它的引用计数减一。
现在我有了更多的上下文,你所要求的只是微不足道的。如果您使用的是 ARC,则此处的此代码段将找到所有 type 的对象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];
}
}