Block 之傳值

傳值流程:

  1. 定義一個(gè) block
  2. 在A實(shí)例中,傳值給 block
  3. 在B實(shí)例中,實(shí)現(xiàn)block,獲取到值

.h文件

// 定義 block 的形式
typedef void (^GetNameBlock)(NSString *name);

@interface Son : Father

@property (nonatomic, copy) GetNameBlock aBlock;

- (void)dothing;
- (void)getValue:(GetNameBlock)nameBlock;

@end

.m文件

- (void)dothing
{
    // 傳值給 block
    if (_aBlock) {
        _aBlock(@"kim");
    }
  
}
// 把實(shí)現(xiàn)的 block 傳過(guò)來(lái)了
- (void)getValue:(GetNameBlock)nameBlock
{
    _aBlock = nameBlock;
}

第一種形式:直接實(shí)現(xiàn) block 傳值

ViewController 的.m文件

// 實(shí)現(xiàn) block
    _son.aBlock = ^(NSString *name) {
        NSLog(@"****小孩的名字 %@ ****",name);
    };

第二種形式:變相實(shí)現(xiàn) block 傳值

    _son = [[Son alloc] init];

// 變相實(shí)現(xiàn) block
    [_son getValue:^(NSString *name) {
        NSLog(@"****小孩的名字 %@ ****",name);
    }];
// 事件
    [_son dothing];

附件(完整的.h文件 和 .m文件)

完整的.h文件

#import "Father.h"


# pragma mark - 協(xié)議
@protocol careChild <NSObject>

- (void)care:(NSString *)name;

@end

// 定義 block 的形式
typedef void (^GetNameBlock)(NSString *name);

@interface Son : Father

@property (nonatomic, weak) id<careChild> delegate;
@property (nonatomic, copy) GetNameBlock aBlock;


- (void)dothing;
- (void)getValue:(GetNameBlock)nameBlock;

@end

完整的.m文件

#import "Son.h"

@implementation Son

- (void)dealloc {

//    NSLog(@"%@", @"Son銷毀了");

}

- (id)init
{
    self = [super init];
    if (self) {
//        NSLog(@"%@", NSStringFromClass([self class]));
//        NSLog(@"%@", NSStringFromClass([super class]));
    }
    return self;
}


- (void)dothing
{
    // 傳值給 block
    if (_aBlock) {
        _aBlock(@"kim");
    }
    
    /*
     傳值給 delegate
     
     [self.delegate care:@"kim"];

     */
}

// 把實(shí)現(xiàn)的 block 傳過(guò)來(lái)了
- (void)getValue:(GetNameBlock)nameBlock
{
    _aBlock = nameBlock;
}

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

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

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