1.@property属性修饰符
//@property属性修饰符:@property ()
//多个修饰符之间用逗号隔开
//1.readwrite:缺省修饰符。可读可写,既有setter方法,也有getter方法
//2.readonly:只读。只有getter方法,没有setter方法
//3.atomic:缺省修饰符。原子的,考虑线程安全
//4.nonatomic:非原子操作。iOS开发中,官方类的属性一般是nonatomic类型的,所以我们一般也写成nonatomic.
//5.assign:基础数据类型(int/float/char/double/long)的缺省修饰符。直接赋值。
//6.对象:1> 字符串:copy
// 2> 其他对象:retain
//7.修改setter或者getter方法的名字(给setter或getter方法起别名)
//setter和getter方法名可以不一致
//姓名,年龄
@property(nonatomic,copy) NSString *name; //姓名
@property(nonatomic,assign,setter = setMouseAge:,getter = mouse) int age; //年龄
2.访问控制
//访问控制:默认的是受保护类型 @protected
//访问控制针对的是成员变量。成员方法没有访问控制。
//1.@protected:默认,受保护类型。在类内减方法中可以直接使用,在类外不能直接使用,但是可以通过方法间接使用。子类可以直接使用。
//2.@private:私有的。在类内可以直接使用,在类外不能直接使用,但是可以通过方法间接使用。子类不可以直接使用,但可以通过父类的方法间接使用。
//3.@public:公有的。类内和类外都可以直接使用。
3.为什么需要在.m中加上 @synthesize age = _age;
@implementation Work
//xcode 4.3 开始 可以 省去 @synthesize xcode 会自动加上
//@synthesize height = _height;
//协议中出现了 @property 那么遵守协议的类 必须要手动添加上@synthesize age = _age; 这时xcode 不会自动加上的
//必须加上
@synthesize age = _age;
- (void)func {
}
@end
4.前向声明
//前向声明:告诉Teacher这个类,接下来要使用的Children是一个类。
//在一个类的.h中,如果要使用另外一个类,那么使用前向声明的方式,为了避免彼此包含。
//前向声明后,如果要在当前类的.m中使用另外一个类(Children类),仍然要导入头文件
//前向声明时,注意类名不要拼错(拼错就相当于声明一个新类)
@class Children;