objective c 正在访问已释放的对象
objective c Accessing deallocated object
如果执行以下代码会发生什么?
NSData* data = [myArray objectAtIndex:i] // assigning from array
[myArray removeAllObjects]; // removing all objects from array.
[self doSomething:data]; // this method will execute some operations with data
数据是否变成了可能导致 EXC_BAD_ACCESS 崩溃的僵尸对象?
不,它不会导致崩溃。您的 data
只是一个指针,保存着存储 NSData 数据的相同数字(虚拟)内存地址。如果其中一个指针设置为指向 nil,或指向与此相关的其他一些数据,它不会触发 NSData 或另一个指针的任何更改。
如果执行以下代码会发生什么?
NSData* data = [myArray objectAtIndex:i] // assigning from array
[myArray removeAllObjects]; // removing all objects from array.
[self doSomething:data]; // this method will execute some operations with data
数据是否变成了可能导致 EXC_BAD_ACCESS 崩溃的僵尸对象?
不,它不会导致崩溃。您的 data
只是一个指针,保存着存储 NSData 数据的相同数字(虚拟)内存地址。如果其中一个指针设置为指向 nil,或指向与此相关的其他一些数据,它不会触发 NSData 或另一个指针的任何更改。