iOS关于分类中如何添加属性

封心一 2019-01-17 10:54:16
我们都知道分类是只可以添加方法的,不能直接添加属性的。但是也不是一定就不能添加的,我们可以使用一些黑魔法,比如runtime,这里我写了一个NSString类型的属性,其实很简单,就是static一个key,然后重写getter setter,然后利用runtime
#import "AppDelegate+Map.h"
#import <objc/runtime.h>

static NSString *strKey = @"key";
@interface AppDelegate ()
@property (nonatomic,strong) NSString *str;
@end

@implementation AppDelegate (Map)

/**
setter方法
*/
- (void)setStr:(NSString *)str {
objc_setAssociatedObject(self, &strKey,str, OBJC_ASSOCIATION_COPY);
}

/**
getter方法
*/
- (NSString *)str {
return objc_getAssociatedObject(self, &strKey);
}

-(void)test{
self.str = @"test";
}
@end


这里呢,我有个疑问,就是一些基础类型的属性可以通过这样的方式,但是一些自定义类,甚至一些第三方类,我如果想在分类中声明其为属性,该如何做呢?比如下面的:
#import "AppDelegate+Map.h"
#import "MapManger.h"
#import <objc/runtime.h>

@interface AppDelegate ()
@property (nonatomic,strong) MapManger *map;
@end

@implementation AppDelegate (Map)

-(void)test{
self.map = [[MapManger alloc] init];
}
@end

或者说分类中压根就没有我这样用法?只能用继承父类的方式???
我这个想法只要用在给AppDeleGate类瘦身,比如一些百度地图、阿里云推送啊之类的想放在分类中
...全文
186 回复 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

29,049

社区成员

发帖
与我相关
我的任务
社区描述
主要讨论与iOS相关的软件和技术
社区管理员
  • iOS
  • 大熊猫侯佩
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧