strong 수식자 weak 효과 구현 (대상이 방출될 때 속성 설정nil)
//
// NSObject+EZ_Dealloc.h
// EZToolKit
//
// Created by yangjun zhu on 2017/1/6.
// Copyright © 2017 Cactus. All rights reserved.
//
#import
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
@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;
}
@end
const 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
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.