- 不要等到明天,明天太遥远,今天就行动。
须读:看完该文章你能做什么?
1.知道 方法的调用顺序
2.知道 多个分类的一些注意事项(同名方法中 系统是怎么调用的)
学习前:你必须会什么?(在这里我已经默认你具备C语言的基础了)
什么是分类
分类是用于给原有类添加方法的,只能添加方法,不能添加属性(成员变量)
一、本章笔记
一、分类的注意点
1.分类是用于给原有类添加方法的,只能添加方法,不能添加属性(成员变量)
2.分类中的 @property, 只会生成 setter / getter方法的声明,不会生成实现 以及 私有的成员变量
3.可以在分类中 访问原有类中 .h 的属性
4.如果多个分类中 都有原有类中 同名的方法, 那么调用该方法的时候执行谁 由编译器决定
会执行 最后一个 参与编译的分类中的方法
注意 : 如果分类中 有 和 原有类同名的方法,会调用分类中的方法
也就是说会忽略原有类的方法
注意 : 在开发中 尽量不要这样写
二、方法的调用顺序:
1.分类
2.本类
3.父类
二、code
main.m
#pragma mark 09-分类注意事项.mp4
#pragma mark 概念
/*
一、分类的注意点
1.分类是用于给原有类添加方法的,只能添加方法,不能添加属性(成员变量)
2.分类中的 @property, 只会生成 setter / getter方法的声明,不会生成实现 以及 私有的成员变量
3.可以在分类中 访问原有类中 .h 的属性
4.如果多个分类中 都有原有类中 同名的方法, 那么调用该方法的时候执行谁 由编译器决定
会执行 最后一个 参与编译的分类中的方法
注意 : 如果分类中 有 和 原有类同名的方法,会调用分类中的方法
也就是说会忽略原有类的方法
注意 : 在开发中 尽量不要这样写
二、方法的调用顺序:
1.分类
2.本类
3.父类
*/
#pragma mark - 代码
#import <Foundation/Foundation.h>
#pragma mark 类
#import "Person+LYH.h"
#pragma mark - main函数
int main(int argc, const char * argv[])
{
Person *p = [[Person alloc]init];
// p.height = 1.77; // '-[Person setHeight:]: unrecognized selector sent to instance 0x100501380'
[p say];
return 0;
}
Person
>>>.h
#import <Foundation/Foundation.h>
@interface Person : NSObject
{
double _weight;
}
@property (nonatomic,assign) int age;
- (void)say;
@end
>>>.m
#import "Person.h"
@implementation Person
@end
Person+LYH
>>>.h
#import "Person.h"
// 1.分类是用于给原有类添加方法的,只能添加方法,不能添加属性(成员变量)
@interface Person (LYH)
//{
// double _height;
//}
// 2.分类中的 @property, 只会生成 setter / getter方法的声明,不会生成实现 以及 私有的成员变量
//@property (nonatomic,assign) double height;
- (void)hello;
@end
>>>.m
#import "Person+LYH.h"
@implementation Person (LYH)
- (void)hello
{
// 3.可以在分类中 访问原有类中 .h 的属性
NSLog(@"hello %f",_weight);
}
/*
注意: 如果分类中 有 和 原有类同名的方法,会调用分类中的方法
也就是说会忽略原有类的方法
注意 : 在开发中 尽量不要这样写
*/
- (void)say
{
NSLog(@"%s",__func__);
}
@end
Person+LYS
>>>.h
#import "Person.h"
@interface Person (LYS)
@end
>>>.m
#import "Person+LYS.h"
@implementation Person (LYS)
// 如果多个分类中 都有原有类中 同名的方法, 那么调用该方法的时候执行谁 由编译器决定
// 会执行 最后一个 参与编译的分类中的方法
- (void)say
{
NSLog(@"%s",__func__);
}
@end
网友评论