我刚刚发现了Build>今天分析XCode的功能,所以我试图解决它发现的所有错误。有几行XCode发现异常会让我感到困惑:
//Test View
self.imageViewTest = [[UIImageView alloc] init];
self.imageViewTest.frame = CGRectMake(0, 0, 100, 100); // <=== Leak
[self.view addSubview:self.imageViewTest];
//Test View 2
self.imageViewTestB = [[UIImageView alloc] init];
self.imageViewTestB.frame = CGRectMake(0, 100, 100, 100); // <=== Leak
[self.view addSubview:self.imageViewTestB];
以及后来我的视频捕捉设置
self.captureOutput = [[AVCaptureVideoDataOutput alloc] init];
captureOutput.alwaysDiscardsLateVideoFrames = YES; // <=== Leak
每条线的警告是“物体的潜在泄漏”。我的release
方法中的所有3个对象都会发送dealloc
消息。这可能有什么问题?
谢谢!
答案 0 :(得分:4)
如果您没有使用ARC,并且您的属性设置了retain属性,那么是,这些是泄漏。这一行:
self.imageViewTest = [[UIImageView alloc] init];
应该是:
UIImageView *iv = [[UIImageView alloc] init];
self.imageViewTest = iv;
[iv release];
或:
self.imageViewTest = [[[UIImageView alloc] init] autorelease];
或者更好的是,使用ARC。它使事情变得更加容易。