English 中文(简体)
iphone-如果我释放一个对象,而该对象仍在运行它的某个方法,该怎么办?
原标题:iphone - What if I release an object while the object is still running one of its method?

我的应用程序将创建一个对象。该对象将连续运行它的一种方法,比方说批量处理图片。

如果它的方法正在运行,而我释放了对象,它被解除了锁定,iOs会自动处理对象的方法吗?例如,自动停止运行对象的方法并避免bad_exec?

最佳回答

当您调用release并且引用计数达到0时,将调用对象的dealloc。就是这样。

这意味着:如果你在一个线程上重新处理,而你的对象从另一个线程(或由于其他不好的原因,同一个线程)发送了释放,那么你应该期待未定义的行为(这可能会导致EXC_bad_ACCESS或类似令人愉快的事情终止)。在这种情况下,应该保留对对象的引用(例如,NSOperation子类)。

问题回答

如果您释放了一个对象,这意味着操作系统可以自由地重用内存并用其他数据覆盖它。

因此,在最终发布后,该对象的方法中对self、ivar、getter、setter或任何其他需要这种(递归)方法的方法的任何引用都可能崩溃,或者更糟的是,随机损坏其他地方使用的内存。

纯粹使用全局或局部变量(不需要对象的进一步初始化或赋值)的方法可能是安全的,但这只是伪装成实例方法的C函数或类方法。





相关问题
Code sign Error

I have created a new iPhone application.I have two mach machines. I have created the certificate for running application in iPhone in one mac. Can I use the other mac for running the application in ...

ABPersonViewController Usage for displaying contact

Created a View based Project and added a contact to the AddressBook using ABAddressBookRef,ABRecordRef now i wanted to display the added contact ABPersonViewController is the method but how to use in ...

将音频Clips从Peter改为服务器

我不禁要问,那里是否有任何实例表明从Peit向服务器发送音响。 I m不关心电话或SIP风格的解决办法,只是一个简单的袖珍流程......

• 如何将搜查线重新定位?

我正试图把图像放在搜索条左边。 但是,问题始于这里,搜索条线不能重新布署。

热门标签