#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
};