@property

@property的作用
1.生成get和set方法的声明
2.生成set和set方法的简单实现
3.如果没有声明对象的成员变量,它会自动生成一个_开头的成员变量
如:@property (nonatomic, retain) NSString *name;
会生成变量_name
和set/get方法:

  • (void)setName:(NSString *)name;
  • (NSString *)name;

@property参数分为4类
1.与set方法内存管理相关的参数
retain:生成符合内存管理原则的set方法(应用于对象类型),如,@property (nonatomic,retain)NSString * name;
assign:直接赋值(应用于对象类型,基本数据类型int, float, double, char),如,@property(nonatomic,assign) int age;

            copy:NSString
            strong:一般对象
            weak:UI控件
            assign:基本数据类型

2.与多线程相关
    nonatomic:不生成多线程相关代码,iOS开发使用这个就行了,效率相对高一些
    atomic:生成多线程相关的代码(默认是使用这种方法)
3.是否要生成get和set方法
    readwrite:可读可写属性,同时生成set和get方法
    readonly:只读属性,只生成get方法,如,@property(nonatomic,assign,readonly) int idCard;
4.set和get方法名称相关的参数
    setter:设置生成set的方法名称
    getter:设置生成get的方法名称
    如,@property(nonatomic,assign,setter = isMan: ,getter = isMan )BOOL isMan;

你可能感兴趣的:(@property)