- (void)viewDidUnload {
self.GPSArray = nil;
self.accelerometerArray = nil;
self.headingArray = nil;
self.managedObjectContext = nil;
self.locationManager = nil;
self.pointLabel = nil;
self.accelerometerLabel= nil;
self.headingLabel= nil;
self.startStop = nil;
self.lastAccelerometerReading = nil;
self.lastGPSReading = nil;
self.lastHeadingReading = nil;
}
- (void)dealloc {
[GPSArray release];
[accelerometerArray release];
[headingArray release];
[managedObjectContext release];
[locationManager release];
[pointLabel release];
[accelerometerLabel release];
[headingLabel release];
[startStop release];
[lastAccelerometerReading release];
[lastGPSReading release];
[lastHeadingReading release];
[super dealloc];
}
3
A
回答
2
调用viewDidUnload的原因是您的视图正在释放并且任何视图资源都应该被释放。
所以,你只需要免费查看相关的项目。
就你而言,它看起来像你只需要释放可能在你视图中的UILabels。如果他们被标记为IBOutlets,而不是在分配属性,你要释放它们使用的内存:
self.pointLabel = nil;
self.accelerometerLabel= nil;
self.headingLabel= nil;
这也意味着,在viewDidLoad中,如果你设置你想在其他性能如果它们已经存在,那么确定它们没有被再次分配,因为如果视图被卸载然后再次被重新加载,它可以被再次调用。
这将被调用的原因是如果视图控制器收到内存警告。您可以在模拟器中测试此内存警告,以了解如何调用viewDidUnload和viewDidLoad。
-1
你不需要,如果你运行这个,你会浪费一些实质性的执行时间。使用属性方法将属性设置为零与释放属性是一样的,但要注意一些额外的东西可能会或可能不会发生,具体取决于您如何设置setter方法。
所以我们来看看这段代码。在viewDidUnload方法的最后,所有属性现在都是零。该对象然后被释放,并且您的对象试图释放一打零等左右的对象。现在,Objective-C运行时非常聪明,如果你发送消息给零,(惊喜),什么都不会发生。
所以,你基本上已经有十几行完全没有任何东西。
-1
不,你不应该。
如果你像上面的代码那样做,你是在浪费精力。
通过在viewDidUnload中将它们设置为nil,它们将通过一个释放过程并自动保留,这意味着在代码到达dealloc时,它们实际上被释放并且为零,并且您正在执行另一个释放那里为零。 发布零对象可能不稳定。
因此,忽略viewDidUnload中的那些。
相关问题
- 1. 为什么我需要在我的Haskell代码中定义这两个变量?
- 2. 我如何引用在gamescene.sks中加入的代码,就像我将IBOutlet一样?
- 3. 我需要一些此代码的一些解释
- 4. 此代码中是否需要MemoryBarrier?
- 5. 我是否需要此代码? OpenGL的在iOS 8
- 6. 我是否需要为此代码添加同步?
- 7. 是否需要在OpenMP中将循环索引设置为私有变量?
- 8. 为什么我不能在此代码中设置位置(AS3)?
- 9. 我是否需要在此框?
- 10. 是否需要在java安装中设置路径变量?
- 11. 我是否需要发布使用OBJC_ASSOCIATION_RETAIN_NONATOMIC设置的@dynamic变量?
- 12. 为什么我们在PHP中声明一些变量就像“$ _variablename”...?
- 13. 我是否需要将nginx设置为我的MongoDB实例的反向代理?
- 14. 我是否需要在此代码示例中释放NSCalendar对象?
- 15. 为什么我需要在此Java Servlet中将content-type设置为html?
- 16. 我是否需要在mysql上为表行增量设置一个外键
- 17. 我们是否可以拥有Class.Empty对象,就像我们在String.Empty中一样。
- 18. 我需要一些关于此代码的帮助
- 19. 我是否需要将Kerberos设置为在SQL Server 2005中使用复制?
- 20. 为什么此代码更改位置,因为我需要它
- 21. 需要此代码的一些解释
- 22. 我们是否需要在类中声明变量?
- 23. 我们是否需要在TCL中“取消”变量?
- 24. 为什么我无法在JsFiddle中运行此代码?是否需要更改html代码?
- 25. 是否可以在HTML代码中设置hashmap变量
- 26. 这段代码是否真的需要在viewDidLoad(在UITableViewController中)末尾有一个“[self.tableView reloadData]”
- 27. 如何以编程方式设置TextView,就像在此图像中一样?
- 28. 我是否需要将会话变量转换为字符串?
- 29. 我需要插入样式表的一些PHP代码
- 30. 是否有任何需要在我的代码中包含某些内容来调用这些组件?
如果你打算投下一个技术上正确的答案,留下评论解释原因通常是有帮助的...... – 2009-07-11 05:43:00
我不是那个投你一票的人,但我不同意它在技术上是正确的。当UIViewController的视图被卸载时,viewDidUnload被调用。不一定需要调用dealloc,并且 - 根据您的应用程序设计 - 这很可能不会。 – grahamparks 2009-07-11 09:20:26