2009-03-04 6 views
3

Objective-C 2.0을 선택하고 도트 연산자를 "구식"대신 속성에 액세스 할 때 이점이 있는지 알고 싶습니다. 내 말의 짧은 예.Objective-C 2.0의 도트 연산자

"오래된"방법 :

[myFraction setNumerator: 1]; 
[myFraction setDenominator: 3]; 

"새로운"방법 :

myFraction.numerator = 1; 
myFraction.denominator = 3; 

감사합니다!

로드리고

+0

왜 그들은 Objective-C에 그렇게했을까요? – OscarRyz

+0

링크가 있습니까? – OscarRyz

답변

7

유일한 차이점은 입력하기 쉽고 가독성이 있다는 것입니다. 의 의견은 사람마다 :) 더 읽을 다릅니다입니다

1
내가 옛날 방식에 대한 주장 것이다

:

사각 브래킷 구문은 당신이 목표 - C의 멤버에 액세스하는 것이 명백한 것으로 maxes 객체이며 도트 구문은 C 구조체 (또는 공용체)를 다루고 있음을 나타냅니다.

그 이상의 것 이상으로 개인적인 선택과 타자를 치는 것일뿐입니다.

+1

나는이 사실에 대한 답을 받아 들일만한 자격이 있는지 확신 할 수 없다. 정말 주관적인 문제입니다. 나는 Andrew Grant에게 투표했다 :) –

2

개체를 내림 할 때 도트 구문을 사용하고 대괄호를 사용하여 실제로 속성을 설정합니다. 그래서 같이

:

[self.view setFrame:CGRectMake(0, 0, 320, 480)]; 

대신 :

[[self view] setFrame:CGRectMake(0, 0, 320, 480)]; 
2

나는 실제로 새로운 구문처럼 -하지만 파이썬 프로그래머로 일을 어쩌면 때문이다.

도트 속성 구문은 KVC/KVO의 키 경로와 잘 맞습니다. 내 눈금은 중첩 된 대괄호보다 깔끔하게 보입니다. (그리고 나는 체계를 좋아해요. 그래서 괄호를 중첩하는 것에 반대하지 않습니다!) 메커니즘을 사용하더라도 메시지를 전달하는 대신 속성에 액세스 할 때 명시 적으로 만듭니다. 같은.

그리고 객체의 속성 액세스가 구조체 또는 공용체의 멤버에 액세스하는 것과 기본적으로 동일하므로 구문 이어야합니다.

0

아마도 C++ 및 C# 프로그래머는 멤버 변수에 액세스 할 때 도트 연산자에 적응할 가능성이 높습니다. 멤버 변수에 비슷한 사용법이 있기 때문입니다.