有没有办法强制@property (strong, nonatomic)
释放声明为强的类中的属性?
我收到了来自崩溃的报告,其中一个属性正在被释放,但随后应用程序试图从 AFHTTPRequest 中的 CompletionBlock 访问它们。但由于该属性被释放,应用程序崩溃了。
我无法重现该场景,因此我需要一些允许我强制释放该属性仅用于测试该场景的东西。
我尝试使用 dealloc 方法,但 ARC 禁止它。
谢谢
有没有办法强制@property (strong, nonatomic)
释放声明为强的类中的属性?
我收到了来自崩溃的报告,其中一个属性正在被释放,但随后应用程序试图从 AFHTTPRequest 中的 CompletionBlock 访问它们。但由于该属性被释放,应用程序崩溃了。
我无法重现该场景,因此我需要一些允许我强制释放该属性仅用于测试该场景的东西。
我尝试使用 dealloc 方法,但 ARC 禁止它。
谢谢
您不能在 ARC 下“强制”释放对象。但是,您可以(在某种程度上)通过将任何对象分配给 nil 而不在方法的其余范围内使用它来建议删除。如果您在访问解除分配的对象时遇到问题,那么您需要正好相反:保留拥有的对象,这样它就不会解除分配任何属性。
强制释放强属性中分配的内存的唯一方法是将其设置为 nil。
方法:
@property (nonatomic, strong) NSArray *testArray;
testArray = //array return from some method;
testArray = nil; //It'll release the memory associated
将 nil 设置为该对象以强制释放内存
前任 :
@property (nonatomic , strong) NSString *str;
str = nil;
我现在自己解决了同样的问题。
我在我的应用程序中的几个点设置了对 nil 的明显引用,但对象仍然不会消失。
该对象使用了计时器,这些计时器都对该对象具有强引用。一旦我使这些无效, dealloc 终于运行了!
正如其他人发布的那样,对对象的所有强引用必须为 nil 才能运行 dealloc。此外,在追踪这些参考资料时要绝对彻底!