我在Big Nerd Ranch的iOS编程第13章中,对于我的生活,我不明白为什么我要使用[self becomeFirstResponder];
而不是self.becomeFirstResponder;
当我以后一种方式键入self.becomeFirstResponder;
时,我收到警告“未使用属性访问结果 - 不应将getter用于副作用”它仍然按预期工作但是为什么我在地球上会使用括号我发现点符号更容易。
我的问题:以这种方式使用点符号可能会产生哪些副作用?
答案 0 :(得分:4)
你问的是错误的问题:副作用就是你想要的 - self
成为第一响应者。这是肯定会发生的副作用。
编译器的意思是不应故意使用点符号来触发这些副作用;可能部分原因是编译器是否会将调用替换为getter或setter(或两者)将取决于使用点表示法的上下文,部分原因是编译器可能想要获取返回结果的假设(如果它)被告知要调用一个getter,部分是因为你的代码看起来不对,因此对人类读错了。
答案 1 :(得分:1)
becomeFirstResponder
不是属性,它是UIResponser
上的方法。
但是,您通过使用点表示法将其视为属性,并忽略返回值,这就是您收到警告的原因。
答案 2 :(得分:0)
我不确定。可能编译器可以省略具有高优化级别的self.becomeFirstResponder;
,因为您不使用属性结果。