나는 어떤 물건을 돌려주는 NSMutableArray
을 가지고있다. 내가 추가 한 객체에는 속성 이름, 나이가 있습니다. 내가 반환 된 객체 (obj.name
또는 obj.age
)에 이러한 속성을 사용하는 경우NSObject 포인터에서 속성을 호출하면 빌드 오류가 발생하는 이유는 무엇입니까?
지금 컴파일러는 이러한 회원, 내가 NSObject의 습관이 회원을 가지고 이해 대신 (.
)
의 (->
)를 사용하지 말한다 그러므로 재산을 이해하지 못할 것입니다.
하지만이 속성 대신 setter 및 getters 메서드 ([obj name]
또는 [obj age]
) 구문을 사용하면 오류가 발생하지 않습니다.
그러나 속성을 사용한다는 것은 setter 또는 getter 만 호출한다는 의미입니까?
광고 목표 C는 동적 언어라고 생각하나요?
그게 전부입니다. 도트 구문은 setter 또는 getter 메서드에 대한 호출을 나타내는 것으로 가정합니다. 메서드 호출로 존재 여부와 관계없이 작동하지 않아야합니까? 어쨌든 .. 설명해 주셔서 감사합니다 :) –
속성이 읽기 전용으로되어 있다면 어떻게 될까요? 컴파일러가 당신이 말하는 클래스/속성을 정확하게 알고 있지 않다면, 적어도 값을 설정하고자하는 경우에는 그것을 사용할 수 있어야하는지 여부를 알 수 없습니다. – UIAdam
@UIAdam : 좋은 지적이지만 속성이 읽기 전용이면 setter가 생성되지 않고 런타임에 "인식 할 수없는 선택기를 개체 예외로 보냈습니다"가 표시됩니다. –