0

我在读一本书,在示例代码中,他们展示了如何将 NSTextField 的值分配给另一个 NSTextField,如下所示:

self.theStory.text = self.theTemplate.text;

当我尝试在不使用点表示法的情况下做同样的事情时:

 [[self theStory]text] = [[self theTemplate]text];

我收到以下错误: 表达式不可分配。

我是 Objective-C 的新手,任何帮助将不胜感激。

4

3 回答 3

0

像这样的东西:

[[self theStory] setText:[[self theTemplate]text]]
于 2013-03-29T18:52:24.267 回答
0

当你使用方括号而不是点时,你需要使用 setter 方法的全名,并去掉=.

[[self theStory] setText:[[self theTemplate] text]];

以我的经验,点表示法最适合用于设置或获取状态,通过写入或读取属性或键路径(例如,键路径是方法链self.datamodel.members.count)。当您执行某种操作时,括号表示法是更好的选择。在某些情况下,可以对没有参数的方法使用点表示法,但这会使代码混乱。例如,如果我有一个NSTimer实例myTimer,我会使用[myTimer fire],而不是myTimer.fire

于 2013-03-29T18:53:48.050 回答
0

那是因为你不能那样做。点表示法有两个等价物,“name”形式和“setName:”形式。你会用[[self theStory] setText:[[self theTemplate] text]];.

于 2013-03-29T18:54:01.213 回答