我在读一本书,在示例代码中,他们展示了如何将 NSTextField 的值分配给另一个 NSTextField,如下所示:
self.theStory.text = self.theTemplate.text;
当我尝试在不使用点表示法的情况下做同样的事情时:
[[self theStory]text] = [[self theTemplate]text];
我收到以下错误: 表达式不可分配。
我是 Objective-C 的新手,任何帮助将不胜感激。
我在读一本书,在示例代码中,他们展示了如何将 NSTextField 的值分配给另一个 NSTextField,如下所示:
self.theStory.text = self.theTemplate.text;
当我尝试在不使用点表示法的情况下做同样的事情时:
[[self theStory]text] = [[self theTemplate]text];
我收到以下错误: 表达式不可分配。
我是 Objective-C 的新手,任何帮助将不胜感激。
像这样的东西:
[[self theStory] setText:[[self theTemplate]text]]
当你使用方括号而不是点时,你需要使用 setter 方法的全名,并去掉=
.
[[self theStory] setText:[[self theTemplate] text]];
以我的经验,点表示法最适合用于设置或获取状态,通过写入或读取属性或键路径(例如,键路径是方法链self.datamodel.members.count
)。当您执行某种操作时,括号表示法是更好的选择。在某些情况下,可以对没有参数的方法使用点表示法,但这会使代码混乱。例如,如果我有一个NSTimer
实例myTimer
,我会使用[myTimer fire]
,而不是myTimer.fire
。
那是因为你不能那样做。点表示法有两个等价物,“name”形式和“setName:”形式。你会用[[self theStory] setText:[[self theTemplate] text]];
.