나는 현재의 수업에서 어떤 것을 언급하면서 자기의 사용을 이해한다고 생각했다. 이 경고 및 후속 실행 실패가 발생하면, 나는 "자기 정의"또는 "자기 사용법"의 많은 변종을 봤는데 아무데도 못 찾았 어. 이 문제는 경고없이 개체를 만들고 그 이유를 이해하는 방법입니다. 내가 self
에 대한 Foo
를 대체 할 경우자기를 사용하여 객체를 만드는 방법은 무엇입니까?
#import <Cocoa/Cocoa.h>
@interface Foo : NSObject {
Foo *obj;
}
-(void)beta;
@end
#import "Foo.h"
@implementation Foo
-(void)beta{
obj = [self new]; // 'Foo' may not respond to '-new'
}
@end
참고, 아무 문제가 없습니다. 나는 클래스 이름과 자기가 동등하다고 생각했지만 컴파일러는 그렇게 생각하지 않는다.
아마도 단지 내 문제를 해결할뿐만 아니라
self
의 사용에 대한 이해를 계몽되지 않습니다 여기에 무엇이 잘못되었는지에 대한 설명.자아의 올바른 사용법에 대한 자습서가 있습니까? "
self
은 메시지의 수신자입니다."라는 말을 넘어선 아무것도 찾을 수 없었습니다. 전혀 도움이되지 못했습니다.
+1 좋은 설명 –
이 잘 작동합니다. + 새로운 [자아 수업]이 걸립니다. 그런 다음 자기 나 obj를 사용하여 -method를 호출 할 수 있습니다. [여기에 CR을 쓰지 않을 것입니다. 죄송합니다] - (void) beta { // Foo * obj; in .h \t // obj = [self new]; 여기에서 실패 - 경고, 실행 실패 obj = [[self class] new]; \t [obj 알파]; // [self alpha]도 여기서 작동합니다. } - (void) alpha { \t NSLog (@ "alpha"); \t return; } – Nick
@ 닉, 질문에 충분히 답변 한 경우 내 대답 왼쪽의 빈 체크 표시를 클릭하여 동의하십시오. –