iOS 如何回调类方法里的block?

作者: 请叫我小白同学 | 来源:发表于2018-07-11 15:26 被阅读54次

    前言:最近想实现自定弹窗功能,刚好看到自己默默关注的 大佬的文章。于是研究了一下,发现一些问题。

    看着他的demo,尝试去自己去实现一遍。


    他的btn在类方法初始化里面:

    大佬牛逼
    大佬demo

    btn的监听事件引用了,RAC框架(笔者惭愧,没用过...,所以用了很普遍的方法)。


    我的实现.png
    里面有几个坑:

    1.在监听方法里面,最初我使用了

    -(void)Clicked:(UIButton *)btn

    发现一旦点击btn,程序就崩溃,“找不到方法”,最后想了一下,发现监听的self 代表着当前Class,也就是当前类,而我使用的是对象方法,当然找不到。 所以改回类方法了。(基础啊)

    2.类方法里面,不能使用成员变量,而属性是成员变量的api。(当时我想使用全局block回调,然而不行.)


    哪怎么回调呢?


    方案一:

    百度谷歌...,网上兜兜转转,最后还是回到原作者 他可能跟我一样,不想使用RAC回调blcok.(小伙伴可以看他的文章,方案好几种牛逼!!!!)


    方案二:

    这是另一个大佬指点的方法:

    大佬牛逼.png

    以及方案三:OC新特性

    Objective-C 类属性:
    @property (class) NSString *someStringProperty;

    Objective-C 现在支持类属性了,与OC 中的类属性对应的是Swift的类型属性。可以在类方法中使用类属性,方便实惠.


    Block 类属性:

    demo.png image.png

    思路

    1. 定义全局的类属性block
    2. 初始化的block,让全局的类属性block指引 self.类属性block = 初始化的block

    3:

    '+(void)Clicked:(UIButton *)sender{

    if (self.buttonClick) {
        self.buttonClick(sender);
    
    }
    

    }'


    控制器中:

    image.png

    可以根据回调的内容,做一些逻辑处理。我想干嘛就干嘛


    这就是最近走的坑,如果有更好的方法,望大佬们指点一下。

    文章可能不足,望大佬们指出.

    相关文章

      网友评论

      本文标题:iOS 如何回调类方法里的block?

      本文链接:https://www.haomeiwen.com/subject/vlehpftx.html