您的位置:首页 > 其它

OBJC_ASSOCIATION 关联学习

2015-09-15 21:40 281 查看
 

实现,添加  NSObject 对象的一个pathLog属性,纪录,我现在跳转到了那一个ViewController。 具体代码如下:

#import <Foundation/Foundation.h>

@interface NSObject (LogController)

@property(nonatomic,strong) NSString *pathLog;

@end


#import "NSObject+LogController.h"
#import <objc/runtime.h>

/**
这种属性的设置,更多的是组件的扩展,对系统类的扩展, 多用于公共的方法。 也就是最上层的方法的添加

这种的形式的写法,其实就是key-val的对应的写法。

其中这里面的@selector(pathLog) 换成 @“key”,也是可以的。

同里这个val也可以是其他。 pathLog 换成 一个block,或者是一个对象都可以。其实也就是一个属性而已。

**/
@implementation NSObject (LogController)

- (void)setPathLog:(NSString *)pathLog{
objc_setAssociatedObject(self, @selector(pathLog), pathLog, OBJC_ASSOCIATION_RETAIN_NONATOMIC);
NSLog(@"程序已经进入--->%@",pathLog);
}

- (NSString *)pathLog{

return objc_getAssociatedObject(self, @selector(pathLog));

}

@end


调用
 #import "NSObject+LogController.h"

@interface ViewController ()

@end

@implementation ViewController

- (void)viewDidLoad {
[super viewDidLoad];
self.pathLog = @"ViewController";

}

打印:

2015-09-15 21:32:22.832 objc_getAssociate_动态生成属性[7228:950729]
程序已经进入--->ViewController
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息