为什么在许多片段代码中声明实例变量和为什么?财产和非财产有什么不同
#import <Foundation/Foundation.h>
@interface class1:NSObject
{
NSMutableString *currentData;
}
@property (nonatomic, retain) NSMutableString * currentData;
答案 0 :(得分:1)
您看到的是“旧代码”......但有时您仍需要支持旧版本(例如10.5)。
一个属性只是一个getter和setter(好吧......它取决于你选择的属性:例如readonly只生成一个getter)。 但是一个属性运行(因此它需要)一个实例变量。通常您在实现文件中看到的内容类似于
@implementation class1
@synthesize currentData = currentData;
@end
这意味着创建使用currentData作为变量的getter和setter。
对于较新版本,您不需要创建实例变量,只需键入属性和合成语句即可。在最新的语言版本中,您甚至不需要syntize语句。自动创建名为_propertyName
的实例变量(下划线+属性的名称)。
- (void)setCurrentData: (NSMutableString*)newData;
用于setter,- (NSMutableString*)currentData;
用于getter),但属性与之前的规则相同:如果只支持最新的操作系统,则可以编写@property
语句并通过使用“强调”变量来确定你的getter和setter ...