• OC-Objection 学习笔记之一:简单的开始


    Objection 统一管理对象的引用问题,我想这就是这种技术的意义吧。

    废话不说,咱们直接上步骤吧:

    1:协议

    我们的意识里要知道,一切围绕协议来进行。

    下面的协议是一个视图的协议,该协议简单到不能再简单了。

    它并未暴露任何变量和接口,只是为了引用该协议对应的视图。

    @protocol SearchViewCtrlProtocol<NSObject>
    @end 



    我倾向于把一个协议单独写到一个文件里。

    然后,再把所有的协议引用到同一个文件里。

    最后,把该文件作为全局文件放到pch里面。

    这里面遵循的原则就是:协议是共享的。

    2:协议对应的类实现

    在该例子中就是一个视图,当然要遵循该协议。

    3:注册协议对应的类

    Objection既然是要解决对象的引用问题,那么通过协议,它要把对象注册进来。

    怎么实现?

    3.1:Objection通过JSObjectionModule来实现。

    @interface SearchViewCtrlModule : JSObjectionModule 
    @end 
     
    @implementation SearchViewCtrlModule 
    - (void)configure 
    { 
        [self bindClass:SearchViewCtrlModule class] toProtocol:@protocol(SearchViewCtrlProtocol)]; 
    } 
    @end 
    

    3.2:添加进Objection:

    JSObjectionInjector *injector = [JSObjection defaultInjector];
    injector = injector ? : [JSObjection createInjector];
    injector = [injector withModule:[[SearchViewCtrlModule alloc] init]];
    [JSObjection setDefaultInjector:injector];
    

      

    4:使用

    JSObjectionInjector *injector = [JSObjection defaultInjector];
    UIViewController <SearchViewCtrlProtocol> *vc = [injector getObject:@protocol(SearchViewCtrlProtocol)];
  • 相关阅读:
    Nodejs-内置核心模块&npm包管理工具

    python 内置函数
    序列化和反序列化(json 和pickle)dumps 为序列化, json为反序列化
    迭代器iter()
    生成器 yield
    装饰器的解释说明
    面向过程中的局部变量(global)
    函数的参数设定
    集合的基本操作
  • 原文地址:https://www.cnblogs.com/SimonGao/p/4830604.html
Copyright © 2020-2023  润新知