1.
1. 基本用途
Ø
l
l
2. 格式
Ø
@interface 类名 (分类名称)
// 方法声明
@end
Ø
@implementation 类名 (分类名称)
// 方法实现
@end
3. 好处
Ø
Ø
Ø
4. 给系统自带的类添加分类
Ø
Ø
5. 注意
Ø
Ø
Ø
1. 类也是个对象
Ø
Ø
typedef struct objc_class *Class;
Ø
2. +load和+initialize
Ø
l
l
l
l
Ø
l
l
3. 获取类对象的2种方式
Class c = [Person class]; // 类方法
或者
Person *p = [Person new];
Class c2 = [p class]; // 对象方法
4. 类对象调用类方法
Class c = [Person class];
Person *p2 = [c new];
3.
1. -description方法
使用NSLog和%@输出某个对象时,会调用对象的-description方法,并拿到返回值进行输出
2. + description方法
使用NSLog和%@输出某个类对象时,会调用类对象+description方法,并拿到返回值进行输出
3. 修改NSLog的默认输出
l
4. 死循环陷阱
l
4.
1. 方法的存储位置
Ø
Ø
Ø
Ø
typedef struct objc_selector
2. SEL对象的创建
SEL s = @selector(test);
SEL s2 = NSSelectorFromString(@"test");
3. SEL对象的其他用法
// 将SEL对象转为NSString对象
NSString *str = NSStringFromSelector(@selector(test));
Person *p = [Person new];
// 调用对象p的test方法
[p performSelector:@selector(test)];
5.
Ø
Ø
Ø
// 下面的代码会引发死循环
- (void)test {
}