Obj-c7[属性,点语法]

//声明一个属性等价与声明了一个settergetter方法
//         属性的类型  属性名
//属性的类型决定生成的setter参数类型和getter返回值类型
//属性名决定于生成的setter方法名和getter方法名
// 属性  属性的类型  属性名

@property (nonatomic, retain)NSString *

name;

//@synthesize 属性的实现 name = _name的含义是
//属性帮你生成的setter方法内部在操作那个实例变量.如果.h里面定义过该实例变量,那么直接操作该实例变量,如果没有定义过,那么会自动帮你生成一个实例变量

//属性是一对方法,settergetter方法

//属性自动生成的实例变量都是私有的,子类不可以直接访问

//ios5.0之后,@synthesize也可以不写,实例变量定义也可以不写,不写的话,帮你自动生成的实例变量是属性名前加_;例如:@synthesize name = _name;


//私有的实例变量,仅仅是子类不能直接访问,但是子类可以通过从父类继承过来的方法去访问


属性的特性

//,读写特性
//readonly 只读,属性只会帮我们生成getter ,不生成setter
//readwrite 读写,即生成setter ,也生成getter ,不写默认是(读写readwrit)
//setter = 把生成setter方法重新改名(有冒号:,因为有参数)
//getter = 把生成getter方法重新改名

@property (/*readonly,*/setter=成绩:, getter = 成绩)NSInteger number;

//,原子性特性
//atomic 原子性特性,保证在多线程下访问该实例变量是安全的(会加一把线程锁),不写默认是aomic
//nonatomic 非原子性特性,不保证在多线程下访问的安全性
//[一半我们都用nonatomic]
@property (nonatomic)CGFloat score;

//,setter语义特性(assign,ratain,copy会影响生成的setter方法的内部实现)
//assign,通常用于基本类型,生成的setter方法就是直接赋值,不写默认是assign
//retain,适用于所有的基本类型,生成的setter方法里面会有内存优化的代码
//copy,仅使用于接受过NSCoping协议的类的对象,生成的setter方法内部也是有内存优化的代码

@property (nonatomic,assign)NSString * major;


 //属性是一对gettersetter方法,点语法是属性的另一种调用格式。

//凡是符合系统默认settergetter书写格式的方法都可以使用点语法

//只要有settergetter就可以使用点语法

//.在等号左边,调用是的setter方法

//.在等号邮编,调用是的getter方法

//没有等号出现.调用是getter方法


你可能感兴趣的:(属性,property,点)