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