2009-08-11 2 views
0

저는 iPhone 개발을 시작한 이래로 클래스의 멤버로 데이터에 액세스하는 가장 좋은 방법은 다소 혼란 스러웠습니다. obj-c 접근 자 사용과 도트 구문 사용의 차이점은 무엇입니까?

이의 내가 MyClass에라는 클래스가 있고, 거기에 내가 있다고 가정 해 봅시다 :

myObject.myInt = 1; 

또는이 :

@interface MyClass : NSObject { 
    int myInt; 
} 

@property (nonatomic, assign) int myInt; 

을 구현에서는이 작업을 수행하는 것이 좋습니다?

[myObject setMyInt:1]; 

이 값도 읽을 수 있습니다. 오브젝티브 C에

int newInt = myObject.myInt; 

int newInt = [myObject myInt]; 
+1

거의 2 일 전에 http://stackoverflow.com/questions/1249392/의 정확한 사본을 요청했습니다. 그 질문에 대한 대답은 여기있는 것보다 더 완전하고 도움이됩니다. 묻기 전에 더 완벽한 검색을하는 것이 가장 좋지만, 2 개의 질문은 0 개의 질문보다 낫습니다. :-) –

답변

8

정말 중요하지 않습니다, 그들은 같은 것입니다. 도트 구문은 사용자가 사용할 수있는 편리한 기능이며 코드를보다 명확하게 처리 할 수 ​​있습니다.

도트 구문을 사용하여 컴파일러에서 경고 또는 오류가 발생하는 경우는 id 객체가있는 경우에도 해당 속성이 있음을 알 수있는 경우입니다.

id someReturnedObject = [somethingObject someMysteryObjectAtIndex:5]; 
int aValue = 0; 
aValue = someReturnedObject.value; // warning 
aValue = [someReturnedObject value]; // will just do it 
0

도트 구문 본질적 접근 방법을 사용 속기이다. 메시지는 여전히 접근 자 메서드를 통해 전송됩니다. 귀하의 질문에 대한 답변을 희망합니다

2

개체의 유형은. 구문을 사용하지만 [] 구문은 사용하지 마십시오. 이것은 당신이 사용할 수 없다는 것을 의미합니다. 오브젝트의 타입이 지정되어 있지 않은 경우에 그것을 사용하는 것이 유익한 경우, 컴파일러가보다 도움이되도록 (듯이)합니다.