如何将此点符号转换为嵌套的Objective-C括号?

时间:2012-02-17 15:05:56

标签: objective-c ios methods

我试图不惜一切代价避免使用点符号,但我正在从一本几乎明确使用它的书中学习,所以当我在文本中看到它时,我一直在将它转换出来。但是,连接在一起的多个点的符号仍然让我感到困惑。

有人可以将这两个方法解开成常规方括号并解释它是如何工作的,这样以后我可以自己将其转换出来吗?

self.tableView.tableHeaderView = searchBar;

self.searchBar.autocorrectionType = UITextAutocorrectionTypeYes;

3 个答案:

答案 0 :(得分:6)

您可以使用带点符号的属性的getter和setter。因此,如何替换for表示法取决于您实际使用的是getter(获取属性的值)还是setter(设置属性的值)。

使用getter:value = [object myProperty];

像这样使用setter:[object setMyProperty:value];

在行中:

self.tableView.tableHeaderView = searchBar;

我们使用setter来修改对象tableHeaderViewself.tableView的值,因此可以通过以下方式替换它:

[self.tableView setTableHeaderView:searchBar];

可以替换为:(我们这次使用的是getter)

[[self tableView] setTableHeaderView:searchBar];

用同样的理由,你可以写:

[self.searchBar setAutocorrectionType:UITextAutocorrectionTypeYes];

或者:

[[self searchBar] setAutocorrectionType:UITextAutocorrectionTypeYes];

答案 1 :(得分:2)

第一个是:

[[self tableView] setTableHeaderView: searchBar];

使用时也没有错:

[self.tableView setTableHeaderView: searchBar];

和第二个:

[[self searchBar] setAutoCorrectionType: UITextAutocorrectionTypeYes];

在这里你也可以使用:

[self.searchBar setAutoCorrectionType: UITextAutocorrectionTypeYes];

答案 2 :(得分:0)

为什么要“不惜一切代价避免点符号”?

我不是说你应该使用点符号,我只是说你应该有正确的理由不这样做。

虽然我们正在讨论这个主题,但是对所有内容使用点符号显然是误用(如果本书在技术上可行的地方使用它,我会说它可能不是一本非常好的书),但它是恕我直言吸气剂和二传手。这很好,因为你的代码已经告诉读者所谓的方法是什么样的方法。

(所以我说AutomaticBobRoss.paintAnImage是误用的,因为你正在调用一个方法,其目的是进行操作 - 应该是[AutomaticBobRoss paintAnImage] - 但AutomaticBobRoss.lastImage很好地利用了点符号)