oc58--Category注意事项
生活随笔
收集整理的這篇文章主要介紹了
oc58--Category注意事项
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
//
// main.m
// Category注意事項(xiàng)#import <Foundation/Foundation.h>
#import "Person+NJ.h"int main(int argc, const char * argv[]) {Person *p = [Person new];
// p.height = 1.75;
[p say];return 0;
} //
// Person.h#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+MJ.h#import "Person.h"@interface Person (MJ)
@end //
// Person+MJ.m#import "Person+MJ.h"@implementation Person (MJ)// 5.如果多個(gè)分類中都有和原有類中同名的方法, 那么調(diào)用該方法的時(shí)候執(zhí)行誰由編譯器決定,會(huì)執(zhí)行最后一個(gè)參與編譯的分類中的方法
-(void)say
{NSLog(@"%s", __func__);
}
@end // Person+NJ.h#import "Person.h"// 1.分類是用于給原有類添加方法的, 它只能添加方法, 不能添加屬性(成員變量)
@interface Person (NJ)
//{
// double _height;
//}
// 2.分類中的@property, 只會(huì)生成setter/getter方法的聲明, 不會(huì)生成實(shí)現(xiàn)以及私有的成員變量,所以下面寫的不會(huì)報(bào)錯(cuò),但是也不能添加屬性。
//@property (nonatomic, assign) double height;- (void) hello;/*方法的調(diào)用順序:1.分類2.本類3.父類*/
@end // Person+NJ.m#import "Person+NJ.h"@implementation Person (NJ)- (void)hello
{// 3.可以在分類中訪問原有類中.h中的屬性NSLog(@"hello %f", _weight);
}// 4.注意: 如果分類中有和原有類同名的方法, 會(huì)調(diào)用分類中的方法,也就是說會(huì)忽略原有類的方法
// 注意: 在開發(fā)中盡量不要這樣寫,原有的就廢了。
-(void)say
{NSLog(@"%s", __func__);
}
@end
?
轉(zhuǎn)載于:https://www.cnblogs.com/yaowen/p/7436161.html
總結(jié)
以上是生活随笔為你收集整理的oc58--Category注意事项的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 946. 验证栈序列
- 下一篇: leetcode523 Continuo