- 使用cocoaPods安装libextobjc;
pod install 'libextobjc'
- 引入头文件
#import "extobjc.h"
- 用法举栗
#import "extobjc.h"
@interface MainViewController ()
@property (nonatomic, strong) void (^block)(void);
@end
@implementation MainViewController
- (void)viewDidLoad {
[super viewDidLoad];
self.block = ^{
NSLog(@"self:%@", self);
};
self.block();
}
-(void)dealloc {
NSLog(@"----MainViewController释放");
}
@end
在退出MainViewController的时候,block因为被MainViewController强引用,引用计数不为0,无法销毁,导致了MainViewController也同样被block强引用,无法被销毁。
所以就需要使用@weakify(self);
、@strongify(self);
来解决循环引用。
@weakify(self);
self.block = ^{
@strongify(self);
NSLog(@"self:%@", self);
};
至此,当MainViewController退出的时候,我们就可以看到控制台输出----MainViewController释放
了。