1
Ich verwende NSData-Objekt, um Speicherdaten zu verwalten. Aber wenn ich NSData.bytes verwende, um auf die Speicherdaten zuzugreifen. Dies führt zu einem Speicherleck. Der Beispielcode ist wie folgt:NSData Zugriffsbytes verursachen Speicherverlust
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
Der Beispielcode ist sehr simple.But wird Speicherleck verursachen und meine Anwendung abstürzen, wenn keine Speicher beendet.