我使用NSData对象来维护内存数据。但是当我使用NSData.bytes访问内存数据时。它会导致内存泄漏。 示例代码如下:
char buf[12];
@interface ViewController ()
@property (nonatomic, copy) NSData *tempData;
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
self.tempData = [[NSData alloc] initWithBytes:buf length:12];
[self loopReadData];
}
- (void)loopReadData {
while(true) {
[self calcData:self.tempData];
}
}
- (void)calcData:(NSData *) data {
const void *dataPtr = data.bytes; ///< memory leak
sleep(0.1);
}
@end
示例代码非常简单。但是当没有内存退出时,会导致内存泄漏并导致我的应用程序崩溃。
答案 0 :(得分:1)
如果我在代码中添加autoreleasepool。再没有内存泄漏。
- (void)loopReadData {
while(true) {
@autoreleasepool {
[self calcData:self.tempData];
}
}
}