一、@property关键字需要掌握的知识:
1.用在@interface中,用来自动生成setter和getter的声明
例:@property int age;--相当于执行了右边的代码-->-(void) setAge:(int) age; -(int) age;
二、@synthesize关键字需要掌握的知识:
1.用在@implementation中,用来自动生成setter和getter的实现
例:@synthesize age = _age;
2.注意:在 @synthesize age = _age; 中如果没有指定成员变量名,实现中默认访问的就是同名的成员变量
例: @synthesize age;//默认访问的就是age成员变量,而不是_age成员变量
如果age这个成员变量不存在,程序会在@implementation中自动生成一个私有的age变量
同理,如果指定的成员变量也不存在,程序也会在@implementation中自动生成一个私有的跟指定变量同名的成员变量
三、Xcode版本注意事项:
1.Xcode 4.4前:关键字@property 只是自动生成set方法和get方法的声明
2.Xcode 4.4后:关键字@property 将会自动生成set方法和get方法的声明和实现、增加一个_开头的成员变量
四、代码实例:
#import <Foundation/Foundation.h> @interface Car : NSObject { int _wheels; //int _speed; } @property int wheels; @property int speed; @end @implementation Car // 默认会访问wheels成员变量,如果这个成员变量不存在,自动生成一个私有的wheels变量 @synthesize wheels; // setter和getter会访问_speed成员变量,如果这个成员变量不存在,自动生成一个私有的_speed变量 @synthesize speed = _speed; - (NSString *)description { return [NSString stringWithFormat:@"wheels=%d,_speed=%d", wheels, _speed]; } @end int main() { Car *c = [[Car alloc] init]; c.wheels = 4; c.speed = 250; NSLog(@"%@", c); //NSLog(@"轮子个数:%d", c.wheels); return 0; }
时间: 2024-09-30 06:55:03