2011-11-05 3 views
1

왜/언제 다른 것을 사용합니까? 나는 방금 경고를 하나의 경고를 사용하고 아무런 경고없이 다른 경고를 사용하는 문제에 직면했다.ios obj.var = exp VS [obj var : exp]

예 :

tableView.tableHeaderView = label; // worked 
[tableView tableHeaderView:label]; // did not work - "instance method '-tableHeaderView:' not found (return type defaults to 'id')" 

혼란

+1

HTTP :

view = tableView.tableHeaderView; 

은 동일 // 개발자. apple.com/library/ios/documentation/cocoa/conceptual/objectivec/Chapters/ocObjectsClasses.html#//apple_ref/doc/uid/TP30001163-CH11-SW17 –

답변

6

족 일반적 set 접두어. 점 표기법을 사용하는 경우 자동으로 컴파일러에 의해

[tableView setTableHeaderView:label]; 

: 대신을 시도해보십시오

말을하는 것입니다
[tableView setTableHeaderView:label]; 

이 :

tableView.tableHeaderView = label; 

가 변환됩니다.

objc 속성을으로 선언하면이 규칙이 setter의 선언 된 속성 이름에도 적용됩니다 (기본값).

게터이 규칙을 사용하지 않는, 그들의 선택기 선언 된 속성 이름 (기본적으로) 동일합니다 :

view = [tableView tableHeaderView];