- 使用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的時(shí)候弛房,block因?yàn)楸籑ainViewController強(qiáng)引用吞杭,引用計(jì)數(shù)不為0,無法銷毀诊笤,導(dǎo)致了MainViewController也同樣被block強(qiáng)引用构拳,無法被銷毀掠哥。
所以就需要使用@weakify(self);
、@strongify(self);
來解決循環(huán)引用球拦。
@weakify(self);
self.block = ^{
@strongify(self);
NSLog(@"self:%@", self);
};
至此靠闭,當(dāng)MainViewController退出的時(shí)候帐我,我們就可以看到控制臺(tái)輸出----MainViewController釋放
了。