【问题标题】:global integer assignment - lvalue required as left operand of assignment全局整数赋值 - 需要左值作为赋值的左操作数
【发布时间】:2011-02-07 00:44:58
【问题描述】:

我是目标 c 的新手,我正在尝试更改目标 c 中全局整数的值,但编译器抱怨以下消息:“左值需要作为赋值的左操作数”。

这是代码行:

[[UIApplication sharedApplication].delegate someNSIntegerValue] = myNSIntegerValue;

我确信这个问题的答案很简单,事实上我无法为我做错的事情找到答案。

【问题讨论】:

  • 前面的 '**' 怎么了?
  • Anders K.:我认为提问者出于某种原因想让它加粗。我会编辑它。

标签: iphone objective-c cocoa


【解决方案1】:

正如 Thomson Corner 已经说过的,someNSIntegerValue 可能是一个吸气剂。但即使不是,你在那里所做的也不可能工作,因为它转化为:

[someInstance someMethod] = someValue;

或在 C 中

someFunction() = someValue;

希望这表明它是错误的。你可以尝试什么:

[[UIApplication sharedApplication].delegate setSomeNSIntegerValue: myNSIntegerValue];

或者属性方式(如果你@synthesize'd):

[UIApplication sharedApplication].delegate.someNSIntegerValue = myNSIntegerValue;

注意最后一个例子实际上应该和之前的例子一样。

【讨论】:

  • 属性是否为@synthesized无所谓;该属性只需要在标题中声明。只要明确声明正确的设置器,您甚至可以在没有@property 的情况下执行此操作。
【解决方案2】:

someNSIntegerValue 是属性的 getter 方法,如果这是您在 AppDelegate 中放入的内容。请改用setSomeNSIntegerValue

【讨论】:

  • 感谢您的快速回复。我使用@synthesize 创建了属性,我还能调用 setSomeNSIntegerValue 吗?
  • 是的,使用 @property@synthesize 创建属性是您使用 setSomeNSIntegerValue 的方式,只要您不将属性属性设置为 readonly
猜你喜欢
  • 2011-09-03
  • 2018-10-19
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多