点语法、成员变量的作用域、@property、id、重写- init方法、分类
// , = : 左右留空格
注释:#pragma mark - 内容
%p: 输出地址
点语法
Person *p.age;
成员变量的作用域
@public 任何类
@private 当前类
@protected (默认)父类和子类
@package 同一框架
@property int age;// 自动生成成员变量的setter和getter声明和实现
@synthesize age = _age; // 自动生成实现,成员变量不存在会自动生成
id 相当于Object * 万能指针
重写- init方法
- (id)init // 初始化父类成员变量
{
self = [super init];
if(self != nil)
_age = 10;
return self;
}
构造方法:初始化对象的方法 init
父类属性交给父类处理 子类的交给子类处理
Category 分类、类别、类目
分类:可以给某一个类扩充一些方法(不修改原来的代码)
// 声明
@interface 类名(分类名称)
@end
// 实现
@implementation 类名(分类名称)
@end
使用注意:
(1)分类只能增加方法,不能增加成员变量
(2)分类方法实现中可以访问原来类中声明的成员变量
(3)分类可以重新实现原来类中的方法,但是会覆盖原来的方法
(4)优先级:分类(最后编译)——>原来类——>父类