나는 5 월 클래스의 인스턴스에서이 코드를 실행self = [super init]을 실행하면 nil을 반환하며 올바른 응답은 무엇입니까?
-(id)init {
self = [super init];
if (self) {
// my init code here
}
return self;
}
을 ... 그리고 자기은 nil을 반환합니다. 나는 이것이 올바른 절차임을 알고 있으므로해야한다. 그러나 자아가 제자리로 돌아 오지 않는다면 어떻게해야합니까? 프로그램이 실패했고 종료 중임을 경고합니다. 무시해 ? 또는 안전하게 진행하기 위해 권장되는 절차가 있습니까?
Objective-C의 결함으로 메시지를 보낼 수 있습니다. 즉, 추억을 다 쓸 수는 있지만 나중에 문제를 정상적으로 처리하는 방법을 모를 때까지는 알 수 없습니다. –
정확히 어떻게 메모리가 부족합니까? –
@Don -init 메소드에서 nil을 리턴하면 초기화 프로세스에서 실패한 사항이 있음을 나타냅니다. 메모리가 부족한 경우 + alloc은 nil을 반환하고 -init는 호출되지 않습니다. 나는 Objective-C 패러다임을 선호한다. 새 개체를 만들 때 또는 메서드 매개 변수로 개체를받을 때 반환 값을 확인하는 것을 잊을 때마다 NULL 포인터 예외에 대해 걱정할 필요가 없습니다. 앱에서 중요한 것만 명시 적으로 확인하면됩니다. –