pragma mark 分類注意事項
pragma mark 概念
/**
// 1.分類是用于給原有類的方法的,他只能添加方法,不能添加屬性(成員變量)
// 2.分類中的@property,只會生成setter/getter方法的聲明,不會生成實現(xiàn)以及私有的所有變量,
// 2.1 分類可以訪問原來類中的成員變量
// 3. 注意:如果分類中和原有類同名的方法,會調(diào)用 分類的方法 \
// 3.1如果多個分類中有同名的方法火焰,會執(zhí)行最后一個編譯分類的方法
// 也就是說 會忽略原有類的方法 \
// 注意: 在開發(fā)中盡量不要這樣寫 \
方法的調(diào)用順序:
1.分類
2.本類
3.父類
*/
pragma mark 代碼
#import <Foundation/Foundation.h>
#pragma mark 類
#import "Person.h"
#pragma mark main函數(shù)
int main(int argc, const char * argv[])
{
Person *p = [Person new];
// p.height = 1.70;
[p say];
return 0;
}
#####Person.h //人類
```objc
#import <Foundation/Foundation.h>
@interface Person : NSObject
{
double _weight;
}
@property (nonatomic,assign)int age;
- (void)say;
@end
Person.m
#import "Person.h"
@implementation Person
- (void)say
{
NSLog(@"age = %i",_age);
}
@end
Person+LYH.h //分類(LYH)
#import "Person.h"
// 1.分類是用于給原有類的方法的,他只能添加方法,不能添加屬性(成員變量)
@interface Person (LYH)
// 2.分類中的@property,只會生成setter/getter方法的聲明,不會生成實現(xiàn)以及私有的所有變量,
//@property (nonatomic,assign) double height;
//- (void)hello;
#warning 分類的擴(kuò)充方法聲明
- (void)hello;
- (void)say;
@end
Person+LYH.m
#import "Person+LYH.h"
@implementation Person (LYH)
// 實現(xiàn)擴(kuò)充方法
- (void)playFootball
{
NSLog(@"%s",__func__);
}
- (void)playBasketBall
{
NSLog(@"%s",__func__);
}
#warning 分類的擴(kuò)充方法實現(xiàn)
- (void)hello
{
// 可以在分類中訪問 原有類 中.h的屬性
NSLog(@"hello %f",_weight);
}
#warning 注意:如果分類中和原有類同名的方法,會調(diào)用 分類的方法
// 也就是說 會忽略原有類的方法
// 注意: 在開發(fā)中浸涼不要這樣寫
- (void)say
{
NSLog(@"%s",__func__);
}
@end
Person+YHS.h //分類
#import "Person.h"
@interface Person (LYS)
- (void)say;
@end
Person+YHS.m
#import "Person+LYS.h"
@implementation Person (LYS)
// 如果多個分類中都有和原有類中同名的方法, 那么就調(diào)用該方法的時候執(zhí)行誰 由編譯器決定
// 會執(zhí)行最后一個參與編譯的分類中的方法
- (void)say
{
NSLog(@"%s",__func__);
}
@end