我试图不惜一切代价避免使用点符号,但我正在从一本几乎明确使用它的书中学习,所以当我在文本中看到它时,我一直在将它转换出来。但是,连接在一起的多个点的符号仍然让我感到困惑。
有人可以将这两个方法解开成常规方括号并解释它是如何工作的,这样以后我可以自己将其转换出来吗?
self.tableView.tableHeaderView = searchBar;
和
self.searchBar.autocorrectionType = UITextAutocorrectionTypeYes;
答案 0 :(得分:6)
您可以使用带点符号的属性的getter和setter。因此,如何替换for表示法取决于您实际使用的是getter(获取属性的值)还是setter(设置属性的值)。
使用getter:value = [object myProperty];
像这样使用setter:[object setMyProperty:value];
在行中:
self.tableView.tableHeaderView = searchBar;
我们使用setter来修改对象tableHeaderView
中self.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
很好地利用了点符号)