IOS开发 Block的学习
蘋果公司正在大力推廣Block塊語法的使用,據(jù)說Block會遲早取代一般協(xié)議代理的使用.
Block最大的作用是函數(shù)回調(diào),簡化代碼.
在ios中,將blocks當成對象來處理,它封裝了一段代碼,這段代碼可以在任何時候執(zhí)行。Blocks可以作為函數(shù)參數(shù)或者函數(shù)的返回值,而其本身又可以帶輸入?yún)?shù)或返回值。它和傳統(tǒng)的函數(shù)指針很類似,但是有區(qū)別:blocks是inline的,并且它對局部變量是只讀的。
block官方定義:
?
示例的詳解如下:??
?
?
注意block可以使用其定義范圍內(nèi)的變量.
?
如果你把block聲明為一個變量,你可以把它當一個函數(shù)(function,本文中特指C語言形式的函數(shù))一樣調(diào)用:
?
block定義:
int?(^myBlock)?(int?a,int?b)?=?^(int?a,int?b){ ? ? ?
? return?a+b; ??
?};
?
如果要修改就要加關(guān)鍵字:__block ? 雙下劃線哦!!!
?
?
簡單的回調(diào),廢話不多說,直接上代碼!!! ?第二個頁面往第一個頁面回調(diào)
先在第二個頁面定義一個塊,然后寫一個方法使用block;
#import<UIKit/UIKit.h>
typedefvoid(^myBlock)(NSString*,NSString*,NSInteger);
@interfaceSecondViewController:UIViewController
{
? ? myBlockblock;
}
?
-(void)passValueUsingBlock:(myBlock)block1;
?
@end
? .m文件
#import"SecondViewController.h"
?
@interfaceSecondViewController()
-(IBAction)Back:(id)sender;
?
@end
?
@implementationSecondViewController
?
?
-(void)passValueUsingBlock:(myBlock)block1
{
? ? block=block1;
}
?
-(void)viewDidLoad
{
? ? [superviewDidLoad];
}
?
-(IBAction)Back:(id)sender{
? ? block(@"hello",@"女",21);
? ? [selfdismissViewControllerAnimated:YEScompletion:nil];
}
@end
?
?
在第一個頁面調(diào)用這個方法
#import"RootViewController.h"
#import"SecondViewController.h"
@interfaceRootViewController()
@property(weak,nonatomic)IBOutletUITextField*name;
@property(weak,nonatomic)IBOutletUITextField*sex;
@property(weak,nonatomic)IBOutletUITextField*age;
-(IBAction)Push:(id)sender;
?
@end
?
@implementationRootViewController
?
-(void)viewDidLoad
{
? ? [superviewDidLoad];
? ? //Doanyadditionalsetupafterloadingtheviewfromitsnib.
}
?
-(IBAction)Push:(id)sender{
? ? SecondViewController*second=[[SecondViewControlleralloc]init];
? ? [secondpassValueUsingBlock:^(NSString*name,NSString*sex,NSIntegerage){
? ? ? ? self.name.text=name;
? ? ? ? self.sex.text=sex;
? ? ? ? self.age.text=[NSStringstringWithFormat:@"%d",age];
? ? }];
? ? [selfpresentViewController:secondanimated:YEScompletion:nil];
}
@end
?
?
?
?
?
?
轉(zhuǎn)載于:https://www.cnblogs.com/moyunmo/p/3371599.html
總結(jié)
以上是生活随笔為你收集整理的IOS开发 Block的学习的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: restful 学习地址
- 下一篇: 用TLS实现安全TCP传输及配置和访问h