关联引用的参数对象的释放取决于与它关联的那个对象的释放。
建立一个观察类:
#import <Foundation/Foundation.h>
const char kWatcher;
@interface Watcher : NSObject
@end
#import "Watcher.h"
@implementation Watcher
- (void)dealloc{
NSLog(@"The thing I was watching is going away!");
}
@end
测试代码:
objc_setAssociatedObject(self, &kWatcher, [Watcher new], OBJC_ASSOCIATION_RETAIN_NONATOMIC);
NSMutableArray *arr = [NSMutableArray array];
NSArray *array = [NSArray arrayWithObject:@"888"];
objc_setAssociatedObject(arr, &kWatcherKey, [Watcher new], OBJC_ASSOCIATION_RETAIN_NONATOMIC);
当self或arr释放的时候,所关联的值([Watcher new]生成的),也会释放,调用
- (void)dealloc{
NSLog(@"The thing I was watching is going away!");
}
所以起到了监听对象销毁的目的。