2014-10-17 3 views
1

저는 Objective-C의 초보자입니다. 나는 C++, C#, Java와 같은 다른 언어 프로그램을 배웠다.이 언어에서는 속성이나 메소드를 호출하는 구문이 object.attributes, object.methods 및 Objective-C에서 object.attributes, [object methods]이다. 때때로 Objective-C에서 [object attributes]를 호출 할 수 있지만 때로는 그럴 수 없습니다. 둘 다 사용할 수있을 때 어떤 차이가 있는지, 그리고 이러한 경우에 더 나은지 궁금합니다. 그리고 우리는 Java [C#]에서 동일하지 않은 경우에 구문 []을 사용합니까?Objective-C의 속성 호출

예 : ObjectItem 배열이 있습니다. ObjectItem은 BOOL 유형 특성이 isLive 인 클래스입니다. 이 배열의 마지막 항목의 값을 변경하고 싶습니다.

오른쪽 : ((ObjectItem*)tempListDetail.lastObject).isLive=YES;

잘못된 : 잘못 :(

이야기 (설명)하십시오 왜 [((ObjectItem*)tempListDetail.lastObject) isLive]=YES;와 내가 모르는 나를 당신이 알고있는 경우에, 감사 미안 내가 어떤 귀찮게 또는 실수가 있다면. : D

답변

2

는 대괄호 구문을 사용하여 isLive에 대한 세터를 호출하는 방법은 다르다 :이처럼 세터의 이름 (속성의 이름과 일치), 게터의 이름을 바꿉니다

[((ObjectItem*)tempListDetail.lastObject) setIsLive:YES]; 

도트 구문을 사용하면 Objective C 컴파일러가이 작은 변환을 수행하므로 코드는 두 경우 모두 동일한 설정기를 호출합니다. 여기에는 "더 좋은"또는 "더 나쁜"구문이 없습니다. 더 좋아하는 구문을 선택하고 프로그램 전체에서 일관되게 사용하십시오.

1

도트 표기법을 사용하면 속성을 설정할 수 있습니다. isLive 메서드를 호출하면 setter를 호출하는 데 필요한 속성을 설정하는 값만 반환됩니다.