在我们的应用程序中,我们有几个UITableViews,它们具有网络支持的数据源,实际填充可能需要一些时间。这是典型的情况:
因此,我们的解决方案是正确“拆除”数据源并取消任何未完成的网络请求,这样就不会发生这种情况。我的问题是:
拆除数据源的“正确”方法是什么?您是否丢失了对它的所有引用,并使用-dealloc取消未完成的网络请求?
你应该把它拆掉?在ViewDidUnload中?的dealloc?
同样的两个问题适用于模型,实际上:什么是正确的方法将其拆除?什么时候?
请注意,这不仅适用于网络请求:我们有另一个使用Geolocation的视图,有时在调用Geolocation完成块时,它应该更新的视图早已消失。
谢谢!
P.S。其他问题:
这有意义吗?
答案 0 :(得分:1)
您使用的是Objective-c,C ++还是Objective-C ++?我问,因为你指的是用c ++语法(::)而不是obj-c( - )的方法,而且我对c ++方面不太好。
通常,如果对象在解除分配(拆除)时有工作要做,则实现-dealloc
方法。在那里,您将取消网络请求并释放任何低级资源,如文件句柄。当没有对实例的更多引用并且它已准备好解除分配时,obj-c运行时将自动调用此方法 - 您不应手动调用此方法。
普遍接受的模式是当你完成它并让运行时处理解除分配对象时,取消对你的对象的任何强引用。如果您在任何地方都遵循该模式(网络,文件系统访问,GPS等),那么它很容易使用。