OC基础--关键字@property 和 @synthesize

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了OC基础--关键字@property 和 @synthesize相关的知识,希望对你有一定的参考价值。

一、@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;
}

  

以上是关于OC基础--关键字@property 和 @synthesize的主要内容,如果未能解决你的问题,请参考以下文章

OC开发系列-@property和@synthesize

[OC学习笔记]属性关键字

[OC学习笔记]属性关键字

ios OC 关键字 copy,strong,weak,assign的区别

iOS面向对象的建模:MVC(OC基础)

OC基础--OC中类的声明与定义