2012-12-15 120 views
1

我正在试图检查一个类是否已经在iOS中实例化。如果它已经实例化,那么我想释放它。检查一个类是否已经在iOS中实例化了

for (UIView* views in self.view.subviews) { 
     if ([views isKindOfClass:[CCGLView class]]) 
      [views removeFromSuperview]; 
    } 

对于那个时候我已经知道年代它是某种UIViews,但我要如何检查其他类?

+0

入住这https://developer.apple.com/library/mac/#documentation/Cocoa/Reference/ObjCRuntimeRef/Reference/reference.html – iDev

+1

你并不需要检查。你可以在ObjC中消息零。 – CodaFi

+0

我正在寻找代码示例。 –

回答

0

我想检查一下,如果一个类已经在iOS中实例化。

你不需要。 Objective-C允许你消息无任何不良副作用。此外,子视图不允许为零,因为它们被添加到内部的NSMutableArray中,反过来,它不允许将零指针添加到它自己。

因为这是当我已经知道这是一种UIViews,但我如何检查其他类?

如果你正在寻找释放每一个的UIView(以及相关的子类),你并不需要在您的比较具体,看到基类(UIView的)是宣布removeFromSuperview中,其中一个反过来,解决您的问题的释放部分。当一个视图从它的超级视图中删除时,它的引用计数减1。

现在我有了更多的上下文,你要求的是微不足道的。如果您使用的是ARC,此处的代码片段将查找CustomClass类型的所有对象,然后将它们设置为零。

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]; 
    } 
} 
+0

? Message nil如何检查这个?我不太清楚。给出一两行代码来澄清。 –

+0

不,你在想这个太难。你不需要检查一个对象是否为零,因为你可以消息零!如果你想发送无删除超级视图,你可以。 – CodaFi

+0

不,MyClass不是View类,它是某种类。无法删除FromSuperview。 –

相关问题