@property参数-set,get方法-setter,getter方法,-Objective-C基础-IOS001

来源:互联网 发布:写轮眼隐形眼镜淘宝 编辑:程序博客网 时间:2024/06/02 04:46

1.生成get与set方法的声明

2.生成get与set方法的简单实现

3.如果你没有声明相对应的成员变量,那么它会自动生成一个_开头的成员变量(私有变量)


@property的参数类型

1.与set方法内存管理相关参数

    1)retain:要生成符合内存管理原则的set方法(应用于对象类型);

    2)assign:直接赋值(对象类型,基本数据类型);

    3)copy


2.多线程相关

    1)nonatomic:不生成多线程管代码,使用这个就可以(效率高一点);

    2)atomic:生成多线程管代码(不写默认是这种方式)。


3.是否要生成set与get方法

    1)readwrite

    2)readonly


4.set与get方法名称相关的参数

    1)setter:设置生成的set方法名称

    2)getter:设置生成的get方法名称

    例如:@property (nonatomic, assign) int height;

        Xcode自动生成

        对应的set方法:- (void)setHeight:(int)height;

              get方法:- (int)height;  // special 

        而换做为setter方法时:

               @property (nonatomic, assign, setter = fun:) int height;

               调用set方法时,[p fun:100];

               调用get方法时,NSLog(@"height is", p.height); //未改变的get方法;

        而换做getter方法时:

                 @property (nonatomic, assign, setter = fun:, getter = getFun) int height;

                  调用时:[p fun:100];

                          int b = [p getFun];

    注释:

    其中p.height = 100; //实质是调用set方法

          NSLog(@"height is", p.height); //实质是调用get方法


    总结

    改变set与get方法名称多用于BOOL类型的变量;

        @property (nonatomic, assign, setter = isDied:, getter = isDied) BOOL isDeid;

        [p isDied:NO];    //set

        [p isDied];    //get

        p.isDied = YES;    //set

        BOOL result = p.isDied;    //get

0 0