저는이 사이트를 처음 접했기 때문에 컨벤션이 질문하는 방법에 대해 무엇인지 모르지만 Objective-C로 시작하고 객체의 인스턴스 생성과 관련된 질문이 있습니다.목표 C alloc 메서드의 논리?
좋아요, 그래서 루트 클래스 NSObject에는 클래스 메소드 alloc과 init이 있으며,이 메소드는 거의 모든 클래스 인 NSObject를 상속받은 모든 클래스에 전달됩니다. 나는 객체를 인스턴스화의 일반적인 형식은 다음과 같이 알고 :
MyObject *m = [[MyObject alloc]init];
그러나 MyObject를 고려하는 것은 NSObject의에서 상속 ALLOC 및 초기화 방법, 이것은 또한 이론적으로 MyObject를하고 NSObject의이 같은 ALLOC이 점을 고려, 일할 수있다
MyObject *m = [[NSObject alloc] init];
을 그리고 그것은 단지 인스턴스 작동,하지만 난을 MyObject 클래스의 메서드를 호출하려고 할 때, NSException가 발생 : 및 초기화 방법 (클래스를 오버라이드 (override)하지 않는 가정). NSObject 할당을 다시 MyObject alloc으로 전환하면 작동합니다. 나는 그 이유를 이해하지 못한다! 이것은 아마도 기본적인 질문 일뿐입니다.
미리 감사드립니다.
제이크
던져진 예외는 무엇입니까? –
@NSArray NSInvalidArgumentException 인 것 같습니다. 인스턴스로 보낸 인식 할 수없는 선택기 (인스턴스의 16 진수 주소) –