ios开发--block应该知道的那几件事

来源:未知 责任编辑:责任编辑 发表时间:2015-09-16 20:03 点击:
block 现在已经基本上已经使用非常普遍了,在使用用中也又很多坑,下面把block开发中应该知道的那几件事总结下. p> 

p>:内联(inline)Block

p>内联block 说白了就是block被嵌入到一个函数中

p>例如:

p>typedef void (^HelloBlock)(void);

p> 

p>- (void) BlockTest{

p>HelloBlock myBlock= ^(void){

p>NSLog(@"Hello Block");

p>};

p>myBlock();

p>}

p>注意事项

p>1.内联的block中内部定义的变量 自己本身有读写权限

p> 

p>2.block内部要修改外部变量 需要将外部变量声明__block

p> 

p>3.Block retain是无效的,要想保留block生命周期,可以通过copy来实现,记得release

p> 

p>4.被block的应用的对象,retainCount会自动加一,为了打破这种 retain circle,可以在对象前加__block,这样block块就不会维护这个对象了

p> 

p>下面的写法如果不加上_block a无法dealloc

p> 

p>__block A  a =[ [[A alloc] init] withBlock:^{

p> 

p> [a action];

p> 

p> [ a release];

p> 

p>}]; //这样A的dealloc方法就会调用

p>@interface ViewController : UIViewViewController 

p> {

p>        NSString *_string;

p> }

p> 

p> __block ViewController *controller = self;   

p>    _block = ^{

p>         NSLog(@"string %@",controller->_string);

p>    };

p>5.在独立的block中不能引用self,如果需要访问可以使用参数传递的方法(可以把其考虑成c+中参数传入函数指针对应copy)**

p> 

p>6.不要随便用.语法

p> 

p>#import <UIKit/UIKit.h>   

p>@interface AppDelegate : NSObject <UIApplicationDelegate>

p>@property (nonatomic, strong) NSString *stringProperty;  

p>@end

p>#import "GCDAppDelegate.h" 

p>@implementation AppDelegate 

p>@synthesize stringProperty;  

p>- (void) BlockTestError{

p>HelloBlock myBlock= ^(void){

p>self.stringProperty = @"Block Objects"; 

p>NSLog(@"String property = %@", self.stringProperty);//运行错误

p>};

p>myBlock();

p>}}  

p> 

p>- (void) BlockTestCorrect{

p>HelloBlock myBlock= ^(void){

p>[self setStringProperty:@"Block Objects"];

p>   NSLog(@"self.stringProperty = %@", [self stringProperty]); //运行ok

p>};

p>myBlock();

p>}}  

p>@end

p> 

p> 

p>另外 本人打算十一后离职换份工作,哪位仁兄公司有意向 站内信联系,帮忙内推下哈.

p> 

p>再打下广告哈 我搭建的个人博客 也已经上线了 引用的是hexo , 地址是hufeng825.github.com  ui配色再微调中,对ie10 以下支持不太好 建议用chrome Firefox  或者safrari 浏览 另外也已经对移动设备做了响应是布局.

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