Memory NSData访问字节导致内存泄漏

Memory NSData访问字节导致内存泄漏,memory,memory-leaks,nsdata,Memory,Memory Leaks,Nsdata,我使用NSData对象来维护内存数据。但是当我使用NSData.bytes访问内存数据时。这将导致内存泄漏。 示例代码如下所示: char buf[12]; @interface ViewController () @property (nonatomic, copy) NSData *tempData; @end @implementation ViewController - (void)viewDidLoad { [super viewDidLoad]; self

我使用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
charbuf[12];
@界面视图控制器()
@属性(非原子,复制)NSData*tempData;
@结束
@实现视图控制器
-(无效)viewDidLoad{
[超级视图下载];
self.tempData=[[NSData alloc]initWithBytes:buf length:12];
[自循环读取数据];
}
-(void)loopReadData{
while(true){
[self-calcData:self.tempData];
}
}
-(void)calcData:(NSData*)数据{
const void*dataPtr=data.bytes;//<内存泄漏
睡眠(0.1);
}
@结束

示例代码非常简单。但是如果没有内存存在,将导致内存泄漏并使我的应用程序崩溃。

如果我在代码中添加autoreleasepool。再次没有内存泄漏

- (void)loopReadData {
    while(true) {
        @autoreleasepool {
           [self calcData:self.tempData];
        }
    }
}