在iOS类中不会显示为视图,例如
@interface MyDataClass : NSObject{}
是否有一种方法可以被覆盖,并且在类的末尾始终被调用。执行/生命周期类似于viewDidUnload
或dealloc
,可以安全地调用方法吗?
或者如何实现一种能够识别这类课程有用寿命完成的方法呢?
答案 0 :(得分:3)
我相信dealloc是从内存中释放NSObject子类时调用的最后一个方法。
- (void)dealloc
{
[super dealloc];
}
答案 1 :(得分:2)
喜欢
- (void)dealloc
{
[super dealloc];
}
答案 2 :(得分:1)
如果你的意思是一个在 Class 的生命周期结束时运行的方法(不是一个实例),我想知道当你完成一个类的运行时,运行时应该怎么知道(您可以随时创建新实例)?有+initialize
方法,但从技术上讲,类本身永远可用(直到程序退出)。
如果您的意思是实例的生命周期,那么您要查找的方法是-dealloc
。
-dealloc。在非ARC代码中,如果覆盖它,则必须调用超类的实现,以便最终调用NSObject
的{{1}},即释放内存时。
编辑:关于内存不足的情况,这是您注册通知的方式:
-dealloc
在dealloc里面,你必须这样做:
// Somewhere inside the -init method of your class
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(myMethod:)
name:UIApplicationDidReceiveMemoryWarningNotification
object:nil];
...否则,您的应用可能会崩溃。
当然,您必须实现一个具有以下签名的方法,该签名将在内存不足的情况下调用:
[[NSNotificationCenter defaultCenter] removeObserver:self];
(否则,您的应用会崩溃)
答案 3 :(得分:1)
让我们想象一下,除了dealloc
之外,你想要一个不同的方法,在低内存条件下调用(而不是在对象被释放时)。哪个对象会调用该方法?
viewDidUnload
是UI Framework的一部分,它由它调用。当应用程序收到有关内存不足情况的消息时,框架会将消息重定向到所有活动视图控制器。
您可以通过在自定义类上创建方法来实现相同的功能,例如: -(void)onLowMemory
然后通过applicationDidReceiveMemoryWarning
方法从您的应用程序委托中调用它,或者您可以注册该类以收听UIApplicationDidReceiveMemoryWarningNotification
。
答案 4 :(得分:0)
这个stackoverflow link或多或少回答了我的问题,但并非完全如此。我认为我的问题更多地与架构或方法采购和程序有关,而不是可以简单回答的问题。