[英]Retain cycles and Instruments
我刚刚写了这个保留周期:
#import <Foundation/Foundation.h>
#import "Driver.h"
#import "Car.h"
int main(int argc, const char * argv[]) {
@autoreleasepool {
Driver *driver = [[Driver alloc] init];
Car *car = [[Car alloc] init];
driver.car = car;
car.driver = driver;
}
sleep(100);
return 0;
}
显然,驾驶员和汽车具有很强的性能。
无论如何,Instruments不会在Xcode 6.1的Leaks-> Cycles&Roots中显示保留周期。
这是一个保留周期,对吗? 那是怎么回事
保持周期不是泄漏。 当您丢失对象的跟踪(参考)时,就会发生泄漏。 由于两个对象都引用了另一个对象,因此不将其视为泄漏。 因此,保留周期比泄漏更难找到。 这取决于您的代码,您应该小心。
好的,现在正在工作:
@autoreleasepool {
Driver *driver = [[Driver alloc] init];
Car *car = [[Car alloc] init];
driver.car = car;
car.driver = driver;
driver = nil;
car = nil;
for (size_t i = 0; i < 100000; i++) {
driver = [[Driver alloc] init];
car = [[Car alloc] init];
}
}
通过此代码,Instruments可以显示泄漏的周期。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.