다음과 같은 코드가 있습니다.iPhone - 메모리 누출 문제 - 메모리 누수가 발생했습니다.
- (void)viewDidLoad
{
NSArray* myarr = [self createArray];
for (NSString* str in myarr)
{
NSLog(@"%@",str);
}
[myarr release];
}
-(NSArray*)createArray
{
NSArray* arr1 = [[NSArray alloc] initWithObjects:@"APPLE",@"MAC",@"IPHONE",nil];
return arr1;
}
"Build & Analyze"에는 두 개의 누설이 표시됩니다. 하나는 [myarr release]에 있는데,이 시점에서 소유하고있는 객체의 참조 횟수가 잘못 감소했습니다. 및 기타를 반환 arr1, 말합니다, 잠재적 인 누설의 대상물에 할당 된 라인 152 arr1에 저장됩니다.
위의 코드에서 "createArray"메서드가 포인터를 반환하고 나도이를 릴리스합니다. 코딩의 옳고 그른 방법입니까?
코드에 누수가 없습니다. 정적 분석기는 이것을 실현할만큼 똑똑하지 않습니다. 불필요하게 제공하는 코드는 두 개의 배열을 생성합니다. – imaginaryboy