我花了几天时间学习 Objective-C 并且有一些关于@property
. 我有 C# 的经验,所以了解指针、初始化等的需求。
举个例子:
@interface MyClass : NSObject
{
IBOutlet UIImageView *image;
}
@property (retain, nonatomic) UIImageView *image
@end
@implementation MyClass
@synthesise image
@end
我知道这@synthesise
是用来创建@property
. 但我有几个问题只是为了帮助我弄清楚:
- 是否
@property
重复或替换了我原来的定义,或者它只是建立了原始定义的可变性和原子性? - 是否
@synthesise
消除了我使用的需要image = [[UIImageView alloc] init]
? - 如果我不提供 a
@property
并且仍然继续手动创建和销毁我的变量,那有什么区别吗?
最终,两者之间的区别在于,@property 在内存管理和多线程方面为您提供了更大的灵活性,而普通的则为您提供了默认值。