我发现了 NSString 的内存泄漏objc_setAssociatedObject
测试代码:
int i = 0;
while (YES) {
@autoreleasepool {
NSString *string = [[NSString alloc] initWithFormat:@"%d", i];
// Comment this line. Then the memory leak is gone.
objc_setAssociatedObject(string, "key", [[NSObject alloc] init], OBJC_ASSOCIATION_RETAIN_NONATOMIC);
}
i++;
}
NSObject不能释放。不确定NSString。
如果我评论代码objc_setAssociatedObject(string, "key", [[NSObject alloc] init], OBJC_ASSOCIATION_RETAIN_NONATOMIC);。没有内存泄漏。
有谁知道发生了什么?
