【问题标题】:ios obj.var = exp VS [obj var:exp]ios obj.var = exp VS [obj var:exp]
【发布时间】:2011-11-05 16:22:34
【问题描述】:

为什么/什么时候使用其中一种?我刚刚遇到了一个问题,我在使用一个时收到警告,而在使用另一个时没有警告。

示例:

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

困惑

【问题讨论】:

标签: ios objective-c syntax accessor


【解决方案1】:

setter 通常以set 为前缀。试试这个:

[tableView setTableHeaderView:label];

也就是说,这个:

tableView.tableHeaderView = label;

转换为:

[tableView setTableHeaderView:label];

在使用点表示法时由编译器自动生成。

声明一个 objc 属性时,这个约定也适用于 setter 声明的属性名称(同样,默认情况下)。

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

view = tableView.tableHeaderView;

等于:

view = [tableView tableHeaderView];

【讨论】:

    猜你喜欢
    • 2018-03-07
    • 2019-10-07
    • 1970-01-01
    • 2011-11-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多