XCode刚刚将 .
运算符的使用更正为 ->
运算符。
我搜索了 ->
运算符的定义或文档,但可以找到。
我正在尝试模拟Java风格的实例变量。具体来说,我正在使用提供的 configuration
对象初始化一个实例,我希望在执行 initializeService
方法后继续使用该对象。< / p>
这个问题的一个很好的答案将提供与Java实例变量声明的比较以及通过实例方法的后续赋值。
XCode更正前的代码:
#import "MY_Service.h"
#import "MY_Configuration.h"
@implementation MY_Service {
MY_Configuration *configuration;
}
-(void)initializeService:(MY_Configuration *)configuration
{
self.configuration = configuration;
}
@end
XCode更正后的代码:
#import "MY_Service.h"
#import "MY_Configuration.h"
@implementation MY_Service {
MY_Configuration *configuration;
}
-(void)initializeService:(MY_Configuration *)configuration
{
self->configuration = configuration;
}
@end
答案 0 :(得分:4)
->
在Objective-C中与C中的相同。即:
a->b
相当于
(*a).b
答案 1 :(得分:2)
->
用于访问实例变量,与用于在C或C ++中访问指针的成员变量的方式相同。
在您提供的代码中,您将configuration
声明为实例变量。如果你想使用点运算符,你应该将它声明为属性,这是你从一开始就应该做的。
答案 2 :(得分:2)
Objective-C实例变量通常以下划线为前缀。如果您更改声明以遵循此约定,则可以将作业重写为
_configuration = configuration;
关于声明属性或实例变量是否更好,这里没有绝对值,但属性声明确实具有某些优点。一些示例允许您为内存管理,原子性等指定其他内容,例如copy
语义。但是您的代码正确地声明了一个可以按预期工作的私有实例变量。