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

发布于 2024-12-14 00:35:40 字数 315 浏览 0 评论 0原文

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

示例:

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

困惑

Why/When do you use one over the other? I just ran into an issue where I got a warning using one and no warning when using the other.

example:

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

confused

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

单身情人 2024-12-21 00:35:40

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

[tableView setTableHeaderView:label];

也就是说,

tableView.tableHeaderView = label;

将 this:转换为:

[tableView setTableHeaderView:label];

使用点表示法时,编译器会自动

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

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

view = tableView.tableHeaderView;

等于:

view = [tableView tableHeaderView];

setters are generally prefixed with set. Try this instead:

[tableView setTableHeaderView:label];

That is to say, this:

tableView.tableHeaderView = label;

is converted to:

[tableView setTableHeaderView:label];

automatically by the compiler when using dot notation.

When declaring an objc property, this convention is also applied to the declared property name for the setter (again, by default).

Getters don't use this convention, Their selectors are the same (by default) as the declared property name:

view = tableView.tableHeaderView;

is equal to:

view = [tableView tableHeaderView];
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文