IOS开发 Block的学习
蘋果公司正在大力推廣Block塊語法的使用,據說Block會遲早取代一般協議代理的使用.
Block最大的作用是函數回調,簡化代碼.
在ios中,將blocks當成對象來處理,它封裝了一段代碼,這段代碼可以在任何時候執行。Blocks可以作為函數參數或者函數的返回值,而其本身又可以帶輸入參數或返回值。它和傳統的函數指針很類似,但是有區別:blocks是inline的,并且它對局部變量是只讀的。
block官方定義:
?
示例的詳解如下:??
?
?
注意block可以使用其定義范圍內的變量.
?
如果你把block聲明為一個變量,你可以把它當一個函數(function,本文中特指C語言形式的函數)一樣調用:
?
block定義:
int?(^myBlock)?(int?a,int?b)?=?^(int?a,int?b){ ? ? ?
? return?a+b; ??
?};
?
如果要修改就要加關鍵字:__block ? 雙下劃線哦!!!
?
?
簡單的回調,廢話不多說,直接上代碼!!! ?第二個頁面往第一個頁面回調
先在第二個頁面定義一個塊,然后寫一個方法使用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
?
?
在第一個頁面調用這個方法
#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
?
?
?
?
?
?
轉載于:https://www.cnblogs.com/moyunmo/p/3371599.html
總結
以上是生活随笔為你收集整理的IOS开发 Block的学习的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: restful 学习地址
- 下一篇: 用TLS实现安全TCP传输及配置和访问h