我们都知道 category 可以给某个已有的类添加方法,也可以添加属性,只不过@property只会生成setter和getter的声明,不会生成setter和getter的实现以及成员变量。当然有了runtime就可以为所欲我了。
这些都是我们们常用的功能了,在这里我想分享一个不一样的小技巧给大家,如有意见请多指教。
主要是在维护项目的时候,某个类的方法实现过多,.m 文件过于庞大,添加新方法的时候要拉到最后,可是2000行了啊。我该怎么办,是谁留下告诉我。
方法总比困难多,想想熬熬夜总会有办法的。
上天不会辜负勤奋的人的,来了。
大家都知道我们在 .h 中声明方法 .m 中实现方法,随着项目慢慢变大,.m 越来越大,所以我们用 category 来解决问题。但是当新人到某个类找方法的时候 .h 找不到,没有自己实现一个,我不想在想下去了啊。
所以我是这样做的,在 .h 声明方法,但是我在 category.m文件中实现,看代码
People 类 .h
@interface People : NSObject
- (void)make;
@end
People 的category 的.m文件
People+cat.m
@implementation People (cat)
- (void)make{
NSLog(@"make");
}
@end
不知道你们习惯不习惯这种写法,慢慢体会吧。
写完会报警告:Category is implementing a method which will also be implemented by its primary class。
苹果不希望在category 中重写类方法,我也不推荐。但是只是警告,也没有影响类的结构(影响类的结构的方法是不可以的),所以用吧。
想要去掉警告的话: 在target的 build settings下 搜索other warning flags 然后给其添加 -Wno-objc-protocol-method-implementation。 这样只是不显示警告而已。
共勉。