Block的使用

#import

@interfaceViewController :UIViewController

//block 定義 無返回值 傳值obj

typedefvoid(^myblock)(idobj);

-(void)creatandblock:(myblock)block;

@end

@interfaceViewController()

@property(nonatomic,assign)intnumber;

//定義一個返回值為Void,名為blockBack的Block。傳值為字符串。

@property(nonatomic,copy)void(^blockBack)(NSString*valuename);

@end

//定義block

typedefvoid(^myblock)(idobj);

@implementationViewController

//添加Block的類型的進行傳值

-(void)creatandblock:(myblock)block

{

}

- (void)viewDidLoad {

[superviewDidLoad];

[selfcreatNSstring:@"xiao"andBlock:^(idobj) {

obj =@"abc";

}];

}

-(void)creatwithBlock:(myblock)block

{

}

-(void)creatNSstring:(NSString*)name andBlock:(myblock)block

{

block(@"acb");

}

- (void)didReceiveMemoryWarning {

[superdidReceiveMemoryWarning];

}

@end

在iOS 編程中發(fā)現(xiàn)Capturng 'self' strongly in this block is likely to lead to a retain cycle 的警告,告訴其,造成的是Block代碼塊的循環(huán)引用。

使用方法

__weaktypeof(self) weakself =self;

self.popView.selectRowAnIndex= ^(NSIntegerindex)

{

NSString*str =? weakself.array[index];

NSLog(@"%@",str);

};

就是將self用弱引用的weakself替代。

主要造成循環(huán)引用的問題是 當(dāng)前類調(diào)用Block ,block內(nèi)部還有當(dāng)前類,就會造成循環(huán)引用,可以將當(dāng)前的類用__weak typeof(當(dāng)前類) weak+當(dāng)前類 = 當(dāng)前類

void (^dealingResult)(NSArray *)= ^(NSArray *statues){

設(shè)計的一個block調(diào)用直接dealingResult();返回值為void

};

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容