에서 MyClass.h정규 구문을 사용할 수있는 이유는 점 표기법을 사용하여 ID에 사용할 수없는 이유는 무엇입니까?
@interface MyClass : NSObject
@property (nonatomic) NSString *something;
@end
MyClass.m 그런
@implementation MyClass
@end
내가 할이 :
MyClass *instance = [[MyClass alloc] init];
id theSame = instance;
[theSame setSomething:@"hh"]; // No error
theSame.something = @"hh"; // "Property 'something' not found…"
왜 네 번째 줄에 오류가 주는가가 아니라 제삼? 그들은 똑같은 일을하고 있습니다.
id는 속성이 없으므로 –
을 확인하십시오. - http://qualitycoding.org/dot-notation/ –
Objective-C를 구문 분석하는 의미가 그렇게 정의 되었기 때문입니다. 컴파일러는'id'에 임의의 메시지를 보낼 수 있지만 속성을 선언해야합니다. (다른 것들 중에서도 "선언 된"속성이라고하는 이유입니다). –