ios obj.var = exp VS [obj var:exp]

Jac*_*nkr 1 syntax objective-c accessor ios

为什么/何时使用一个而不是另一个?我刚刚遇到一个问题,我在使用另一个时发出警告而没有警告.

例:

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

困惑

jus*_*tin 6

制定者通常以前缀为前缀set.试试这个:

[tableView setTableHeaderView:label];
Run Code Online (Sandbox Code Playgroud)

也就是说,这个:

tableView.tableHeaderView = label;
Run Code Online (Sandbox Code Playgroud)

转换为:

[tableView setTableHeaderView:label];
Run Code Online (Sandbox Code Playgroud)

使用点表示法时由编译器自动进行.

宣布的objc属性,这一惯例也适用于声明的属性名称的setter(再次默认情况下).

Getter不使用此约定,它们的选择器与声明的属性名称相同(默认情况下):

view = tableView.tableHeaderView;
Run Code Online (Sandbox Code Playgroud)

等于:

view = [tableView tableHeaderView];
Run Code Online (Sandbox Code Playgroud)