범주 (비 원자, 유지)로 선언 된 NSMutableArray 속성이 있습니다. dealloc에서 그 변수에 대한 메모리를 해제합니다. 원래 viewDidLoad에서 배열을 할당하고 해당 데이터에 더미 데이터를 채우는 다른 메서드를 호출했습니다. 기본적으로자동 실행 해제 된 변수를 보존하려면 어디에서 해제해야합니까?
[categories addObject:someObject1];
[categories addObject:someObject2];
....
이것은 작동하고있었습니다.
그런 다음 동료와 실제 데이터를 모델로 전달하고 자동 레이아웃 된 배열을 반환했습니다. 방법을 사용하면 EXC_BAD_ACCESS가 표시됩니다.
categories = [datamanager GetCategories];
이제 datamanager GetCategories 메소드에서 반환 된 자동 레이아웃 배열을 유지하지 않았기 때문에 그렇게 되었습니까?
그렇다면 메모리 누수가 될 수 있으므로 viewDidLoad에서 alloc/init을 삭제해야합니다.
감사합니다. 단지 메모리 관리를 올바르게 이해하고 있는지 확인하려고합니다.
나는 'self.' 구문을 사용하는 것이 가장 좋습니다. Obj-C 2.0 프로퍼티를 이미 선언했다면, 그것을 사용할 수도있다. – darvids0n
darvids0n에 동의하면 self.property = 직접 설정하는 것보다 항상 바람직합니다. 특히 setter를 무시할 때 항상 작동하지 않는 이유를 알 수 없습니다. –
'self.' 문법이 바람직합니다. 그러나 Obj-c 메모리 관리를 배우는 사람이 두 옵션의 작동 방식을 이해하는 것이 중요합니다. – SundayMonday