내 사용자 정의 초기화 프로그램이 실패하면 nil을 리턴한다고 가정합니다. 내 이니셜 라이저에서 할당 한 메모리를 정리하는 컨벤션은 무엇입니까? dealloc에서 정리 될 것으로 기대하고 있었습니까?사용자 정의 init 실패시 메모리 정리 방법
는 여기에 인위적인 예입니다
- (id)init
{
if ((self = [super init])) {
instanceVar1 = [[NSString alloc] initWithString:@"blah"];
if (bad_thing_oh_noes) {
return nil;
}
}
return self;
}
- (void)dealloc
{
[instanceVar1 release];
[super dealloc];
}
내가 할당이 배열 등을 포함하는 복잡한 객체를 직렬화 복원 될 전에 내가 효율적으로 모든 오류 상태를 확인할 수 없습니다 더 현실적인 상황.
어쨌든 nil을 반환하기 전에 할당 된 메모리를 정리해야합니까? nil을 반환하기 전에 자기 자신에게 dealloc 메시지를 보내거나이 모든 것이 마술처럼 관리되고 있습니까?
바보 나, 나는 그 문서를 읽을 수 있지만 내 질문에 대답 부분을 놓쳤다 생각했다! 이 문제를 해결해 주셔서 감사합니다. :-) – Sandy
@Sandy 당신은 환영합니다 :) – albertamg