你好,歡迎來到IOS教程網

 Ios教程網 >> IOS使用技巧 >> IOS技巧綜合 >> block的用法(作為屬性、返回值和參數)

block的用法(作為屬性、返回值和參數)

編輯:IOS技巧綜合
[摘要]本文是對block的用法(作為屬性、返回值和參數)的講解,對學習IOS蘋果軟件開發有所幫助,與大家分享。

block在實際開發中簡便易用,主要用在回調,控制器之間的傳值等方面。那下面對其用法進行分類

直接上代碼:(全部用的無參無返回值)

第一種使用方法(作為屬性)在當前使用的文件夾中進行賦值和調用

 ZWPerson.h文件中:
 
 #import <Foundation/Foundation.h>
 @interface ZWPerson : NSObject
 @property (strong, nonatomic)void(^play)();
 @end
 
 ViewController.m文件中:
 #import "ViewController.h"
 #import "ZWPerson.h"
 @interface ViewController ()
 @property (strong, nonatomic)ZWPerson *p;
 @end
 @implementation ViewController
 
 - (void)viewDidLoad {
     [super viewDidLoad];
     ZWPerson *p = [[ZWPerson alloc] init];
     p.play = ^(){
         NSLog(@"玩游戲");
     };
     _p = p;
 }
 
 - (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event
 {
     //在當前文件夾中,哪裡需要就可以直接調用這個方法
     _p.play();
 }
 @end

第二種使用方法(作為方法參數)主要是外界不能調用,只能在方法內部進行調用,用於回調和傳值等

也可以直接在當前文件夾,定義一個方法調用

 ZWPerson.h文件中:
 
 #import <Foundation/Foundation.h>
 @interface ZWPerson : NSObject
 
 - (void)eat:(void(^)()) bolck;
 
 @end
 
 ZWPerson.m文件中:
 #import "ZWPerson.h"
 @implementation ZWPerson
 - (void)eat:(void(^)())block
 {
     NSLog(@"吃美味");
     block();
 }
 @end
 
 ViewController.m文件中:
 #import "ViewController.h"
 #import "ZWPerson.h"
 @interface ViewController ()
 @property (strong, nonatomic)ZWPerson *p;
 
 @end
 @implementation ViewController
 
 - (void)viewDidLoad {
     [super viewDidLoad];
 
     ZWPerson *p = [[ZWPerson alloc] init];
     [p eat:^{
         NSLog(@"睡覺");
     }];
 }
 @end

第三種使用方法(作為方法返回值)內部不能調用,只能外界調用,相當於代替了方法!

 ZWPerson.h文件中:
 #import <Foundation/Foundation.h>
 @interface ZWPerson : NSObject
 - (void(^)())run;
 @end
 
 ZWPerson.m文件中:
 #import "ZWPerson.h"
 @implementation ZWPerson
 - (void (^)())run
 {
     return ^(){
         NSLog(@"跑了3公裡");
     };
 }
 @end
 
 ViewController.m文件中:
 #import "ZWPerson.h"
 @implementation ZWPerson
 - (void)viewDidLoad {
     [super viewDidLoad];
     ZWPerson *p = [[ZWPerson alloc] init];
     //可以直接通過點語法調用run,如果有參數,()表示裡面可以傳參數,
     p.run();
 }
  1. 上一頁:
  2. 下一頁:
蘋果刷機越獄教程| IOS教程問題解答| IOS技巧綜合| IOS7技巧| IOS8教程
Copyright © Ios教程網 All Rights Reserved