我大部分时间都看过这段代码。这里定义了两个变量名,在实现中它通过赋值来合成。做这样的事情的目的是什么?就像保留 2 个单独的变量名一样。这是一种约定吗?
测试.h
@interface Test {
id<something> _variable1;
}
@property (nonatomic, retain) id<something> variable2;
测试.m
@synthesize variable2 = _variable1
我大部分时间都看过这段代码。这里定义了两个变量名,在实现中它通过赋值来合成。做这样的事情的目的是什么?就像保留 2 个单独的变量名一样。这是一种约定吗?
测试.h
@interface Test {
id<something> _variable1;
}
@property (nonatomic, retain) id<something> variable2;
测试.m
@synthesize variable2 = _variable1
只有一个变量。命名的东西variable2
实际上是一个属性,它基本上是 get/set 方法对的语法快捷方式。定义属性时,您可以显式编写 get/set 方法...
- (void)setVariable2:(id<something>)value {
if (_variable1 != value) {
[_variable1 release];
_variable1 = [value retain];
}
}
- (id<something>)variable2 {
return _variable1;
}
...或使用@synthesize
构造自动生成上述方法,从而为您节省大量单调的输入。(它还发出代码来释放 _variable1 在对象的破坏,我没有在这里包括在内。)
但是,有时您可能希望以不同于默认的方式实现这些方法中的一种或其他。在这种情况下,您将自己编写。您甚至可以将@synthesize
其中一种方法的自定义版本混合在一起。