strong修饰符实现weak效果(对象释放时,属性置nil)
来源:互联网 发布:香港大学网络教育报名 编辑:程序博客网 时间:2024/06/05 00:32
//// NSObject+EZ_Dealloc.h// EZToolKit//// Created by yangjun zhu on 2017/1/6.// Copyright © 2017年 Cactus. All rights reserved.//#import <Foundation/Foundation.h>typedef void (^voidBlock)(void);@interface EZBlockExecutor : NSObject- (id)initWithBlock:(voidBlock)block;@end@interface NSObject (EZ_Dealloc)- (void)ez_runAtDealloc:(voidBlock)block;@end
//// NSObject+EZ_Dealloc.m// EZToolKit//// Created by yangjun zhu on 2017/1/6.// Copyright © 2017年 Cactus. All rights reserved.//#import "NSObject+EZ_Dealloc.h"#import <objc/runtime.h>@interface EZBlockExecutor() { voidBlock _block;}@end@implementation EZBlockExecutor- (id)initWithBlock:(voidBlock)aBlock{ self = [super init]; if (self) { _block = [aBlock copy]; } return self;}- (void)dealloc{ _block ? _block() : nil;}@endconst void *runAtDeallocBlockKey = &runAtDeallocBlockKey;@implementation NSObject (EZ_Dealloc)- (void)ez_runAtDealloc:(voidBlock)block{ if (block) { EZBlockExecutor *executor = [[EZBlockExecutor alloc] initWithBlock:block]; objc_setAssociatedObject(self, runAtDeallocBlockKey, executor, OBJC_ASSOCIATION_RETAIN); }}@end
https://github.com/easyui/EZToolKit/blob/master/EZToolKit/EZCategory/Foundation/NSObject/NSObject%2BEZ_Dealloc.m
阅读全文
0 0
- strong修饰符实现weak效果(对象释放时,属性置nil)
- 对象回收时Weak指针自动被置为nil的实现原理
- 对象回收时Weak指针自动被置为nil的实现原理
- IBOutlet对象应该使用strong还是weak修饰
- weak 如何将对象置为nil
- 关于代码布局时,声明时的weak、strong修饰符
- 关于property的各个修饰符(strong,weak,retain,assign,copy等等)
- iOS copy、assgin、weak、strong等修饰符
- UIView 的 weak 和 strong 修饰符使用的场景
- iOS 属性修饰符strong还是copy?
- iOS 属性修饰符Copy 还是Strong
- strong, weak, unsafe_unretained.属性解释
- weak 属性需要在dealloc中置为nil吗
- iOS学习笔记(8)——ARC与所有权修饰符——strong,weak和autorelease
- @property的属性weak nonatomic strong等介绍(ios)
- @property的属性weak nonatomic strong等介绍(ios)
- @weak - @strong 宏的实现
- iOS 底层解析weak的实现原理(包含weak对象的初始化,引用,释放的分析)
- UE4_网络基础知识
- OpenGL = Hello World
- AVPlayer 截屏(swift3.0)
- 交叉编译zlib
- androidStudio简析
- strong修饰符实现weak效果(对象释放时,属性置nil)
- OS X中Java版本管理工具jEnv
- 管理你的第二屏(airPlay)
- Python 使用matplotlib画图添加标注、及移动坐标轴位置
- iOS的标识符
- iOS10.3中划线失效
- swift项目在iOS8 通过init(nibName nibNameOrNil: String?, bundle nibBundleOrNil: Bundle
- Database mount ID mismatch(ORA-16009: invalid redo transport destination )
- 将博客搬至CSDN