ios block(3)

来源:未知 责任编辑:责任编辑 发表时间:2015-09-17 09:44 点击:

p>IntToStringConverter independentBlockObject = ^(id self, NSInteger paramInteger) {  

p>    KSLog(@" >> self %@, memberVariable %d", self, [self memberVariable]);  

p>      

p>    NSString *result = [NSString stringWithFormat:@"%d", paramInteger];  

p>    KSLog(@" >> independentBlockObject %@", result);  

p>    return result;  

p>};  

p>  

p>  

p>- (void)testAccessSelf  

p>{  

p>    // Independent  

p>    //  

p>    [self convertIntToString:20 usingBlockObject:independentBlockObject];  

p>      

p>    // Inline  

p>    //  

p>    IntToStringInlineConverter inlineBlockObject = ^(NSInteger paramInteger) {  

p>        KSLog(@" >> self %@, memberVariable %d", self, self.memberVariable);  

p>          

p>        NSString *result = [NSString stringWithFormat:@"%d", paramInteger];  

p>        KSLog(@" >> inlineBlockObject %@", result);  

p>        return result;  

p>    };  

p>    [self convertIntToStringInline:20 usingBlockObject:inlineBlockObject];  

p>}  

p> 

p> 

p> 

p> 

p> 

p> 

p>3,使用 weak–strong dance 技术来避免循环引用

p> 

p> 

p>在第二条中,我提到内联 block 可以直接引用 self,但是要非常小心地在 block 中引用 self。因为在一些内联 block 引用 self,可能会导致循环引用。如下例所示:

p> 

p> 

p>[cpp]  

p>@interface KSViewController ()  

p>{  

p>    id _observer;  

p>}  

p>  

p>  

p>@end  

p>  

p>  

p>@implementation KSViewController  

p>  

p>  

p>- (void)viewDidLoad  

p>{  

p>    [super viewDidLoad];  

p>    // Do any additional setup after loading the view, typically from a nib.  

p>      

p>    KSTester * tester = [[KSTester alloc] init];  

p>    [tester run];  

p>      

p>    _observer = [[NSNotificationCenter defaultCenter]  

p>                 addObserverForName:@"TestNotificationKey"  

p>                 object:nil queue:nil usingBlock:^(NSNotification *n) {  

p>                     NSLog(@"%@", self);  

p>                 }];  
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
用户名: 验证码:点击我更换图片
最新评论 更多>>

推荐热点

  • Lexical or Preprocessor Issue 'xxx.h
  • ios学习笔记(二)xcode 4.3.2下实现基本交互
  • ios学习笔记(一)xcode 4.3.2下创建第一个ios项目
  • UITableView一些方法
  • IOS类似iphone通讯录TableView的完整demo【附源码】
  • ios版本的helloworld
  • iPhone SDK开发:本地文本文件内容的读取
  • 如何为Iphone应用创建启动界面
  • 去掉屏幕键盘的方法
网站首页 - 友情链接 - 网站地图 - TAG标签 - RSS订阅 - 内容搜索
Copyright © 2008-2015 计算机技术学习交流网. 版权所有

豫ICP备11007008号-1