[10秒学会] - iOS 3种常用形式block

本文详细探讨了Objective-C与Swift在iOS开发领域的应用与区别,包括语言特性、性能优化及实际案例解析,旨在帮助开发者提升iOS应用开发技能。

1:把block保存到对象中,恰当时机的时候才去调用

// block:ARC使用strong,非ARC使用copy
// block类型:void(^)()
@property (nonatomic, strong) void(^operation)();

 

- (void)block1
{
    Person *p = [[Person alloc] init];
    
    void(^block)() = ^() {
        NSLog(@"执行对象中block");
    };
    
    p.operation = ^(){
        
        NSLog(@"执行对象中block");
    };
    
    p.operation = block;
    
    _p = p;

}

- (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event
{
    _p.operation();
}


2.把block当做方法的参数使用,外界不调用,都是方法内部去调用,Block实现交给外界决定.

// name:类型的别名
typedef void(^BlockName)();
// 参数类型:block类型
- (void)eat:(void(^)())block;
//- (void)eat:(BlockName)block;
Person *p = [[Person alloc] init];
    
    
    void(^block)() = ^{
        NSLog(@"吃东西");
    };
    
    [p eat:block];
    
    // 传入block给参数的Block赋值
    [p eat:^{
        NSLog(@"吃东西");
    }];


3.把block当做方法的返回值,目的就是为了代替方法.,block交给内部实现,外界不需要知道Block怎么实现,只管调用

- (void(^)(int))run;

 Person *p = [[Person alloc] init];
    
    [p run:2];
    
    p.run(2);
    void(^run)() = p.run;
    run();
    
    

 

转载于:https://my.oschina.net/zhaodacai/blog/672804

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值