我刚写了这个保留周期:
#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没有在Leaks中显示保留周期 - &gt;周期&amp;根据Xcode 6.1。
这是一个保留周期,对吗?那发生了什么?
答案 0 :(得分:0)
保留周期不是泄漏。丢失对象的轨迹(参考)时发生泄漏。由于两个对象都引用了另一个对象,因此不会将其视为泄漏。因此,保留周期比泄漏更难找到。这取决于你的代码,你应该小心。
答案 1 :(得分:0)
好的,它现在正在工作:
@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会显示Leaks周期。