@interface
ToolDemoViewController
()
{
BOOL isSuccess;
{
BOOL isSuccess;
void (^testBlock2)(NSString *str);
}
@property
(
strong
,
nonatomic
)
NSString
*testName;
@property
(
nonatomic
,
copy
)
void
(^testBlock)(
NSString
*str);
#pragma mark -
测试循环引用
- (
void
)testWeakAction {
// 这里不需要 __weak
[ UIView animateWithDuration : 0.3 animations :^{
self . view . backgroundColor = [ UIColor redColor ];
self . testName = @"sadgf" ;
}];
// 这里不需要 __weak
dispatch_async ( dispatch_get_main_queue (), ^{
self . view . backgroundColor = [ UIColor blueColor ];
self . testName = @"dddd" ;
});
// 这里需要 __weak
__weak typeof ( self ) wSelf = self ;
testBlock2 = ^( NSString *str) {
NSLog ( @"===%@" ,wSelf. testName );
};
// 测试调用
if ( self . testBlock ) {
self . testBlock ( @" 测试 " );
}
if ( testBlock2 ) {
testBlock2 ( @"ddd" );
// 这里不需要 __weak
[ UIView animateWithDuration : 0.3 animations :^{
self . view . backgroundColor = [ UIColor redColor ];
self . testName = @"sadgf" ;
}];
// 这里不需要 __weak
dispatch_async ( dispatch_get_main_queue (), ^{
self . view . backgroundColor = [ UIColor blueColor ];
self . testName = @"dddd" ;
});
// 这里需要 __weak
__weak typeof ( self ) wSelf = self ;
testBlock2 = ^( NSString *str) {
NSLog ( @"===%@" ,wSelf. testName );
};
// 测试调用
if ( self . testBlock ) {
self . testBlock ( @" 测试 " );
}
if ( testBlock2 ) {
testBlock2 ( @"ddd" );
}
void
(^testTempBlock) (
NSString
* str);
// 这里不需要 __weak
testTempBlock = ^( NSString *str) {
NSLog ( @"%@" , self . testName );
};
// 测试方法里面的 block 的调用
if (testTempBlock) {
testTempBlock( @"xiao" );
// 这里不需要 __weak
testTempBlock = ^( NSString *str) {
NSLog ( @"%@" , self . testName );
};
// 测试方法里面的 block 的调用
if (testTempBlock) {
testTempBlock( @"xiao" );
}
// block里面有延迟的时候需要特殊处理
self.testBlock = ^(NSString *str) {
ToolDemoViewController *strongSelf = wSelf;
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (2.0 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
// 页面返回上个页面后,才执行,就会为空了。。。
NSLog(@"name111===%@,,,%@",strongSelf.testName,str);
});
};
if (self.testBlock) {
self.testBlock(@"xiaoming");
}
}
Tip: 自己开发了好玩的APP: 《小明搜索》(App Store上搜索:"小明搜索")
[点击下载 "小明搜索"](https://itunes.apple.com/cn/app/小明搜索/id1378798470?l=en&mt=8)
1、集必应、百度、搜狗为一体的搜索平台
2、用户随意收藏或添加自己喜欢的网站
3、网页文字播放功能
4、收藏网页的视频,本地播放
5、附加常用小工具
6、后台播放网页音频
7、3D Touch提供便捷入口
完全自定义的搜索助手,简约的爱不释手~
该APP不断完善中~