zoukankan      html  css  js  c++  java
  • 关于Objection 框架或解耦合方案

    参考链接

    http://www.cocoachina.com/industry/20140416/8174.html

    https://github.com/atomicobject/objection

    https://github.com/appsquickly/Typhoon

    在 github上 出现了 这2个比较受欢迎的框架模式

    ---

    关于objection

    example

    step1 注册绑定类(返回实例对象)

    load 函数 是在'镜像' 加载的时候 执行(先于main()函数调用!!!),也就是在整个app生命周期 只执行一次

    @protocol(AViewControllerProtocol) 仅仅依据它作为key 和对象绑定

    bindClass实现 其实就是 根据class生成临时obj (class基本描述信息) ,用obj和key绑定

    当同一个@protocol(AViewControllerProtocol)和多个class绑定,需要通过named来区分

    疑问?:app启动的时候 会有很多AModule对象

    step2 使用对象

    尽管是通过@protocol(AViewControllerProtocol)生成的组合字符串作为key 和AViewController绑定,

    实际上 AViewController并不一定遵循并实现AViewControllerProtocol

    --- ---

    绑定实例对象

    注意:当使用实例对象 和协议 进行绑定时,TView必须遵循协议,objection源码中做了校验

    --- 绑定MetaClass (返回MetaClass)

    至此,我接受objection能满足我的需要 模块间解耦;花点心思,我们再来仔细瞧瞧它

    作者提供的例子 乍一看 没懂,其实是这样的

    当通过objection来获取对象,会帮你初始化engine 、 breaks   且并没有@import "Engine.h"

    --- ---

    关于provider

    使用

    实现

    --- ---

    关于一个类 有多个初始化 函数 该怎么办?

    上面的provider貌似 是一种可行的方式,但是要在参数中进行区分改调用那个初始化函数

    看下作者提供的

    1,使用 (这里在使用处,将有个警告!!!,因为 xcode分析器 不知道 @selector在哪里)

    也就是作者的Ad-Hoc Initializer

    2,必要实现 (也就是 你得先'注册'初始化函数)

    ---

    作者提供的自定义参数函数  getObjectWithArgs 并不会默认走 

    还是走的是init方法

    getObjectWithArgs 作用仅仅是根据 objection_requires绑定后 初始化属性

    --- 也就是 还是得显示的调用initWithParas:para2

  • 相关阅读:
    RDLC报表开发技巧备忘
    C#3.0"扩展方法"简记
    将activity转化成view
    取消logcat输出
    低栏的项目切换
    android edittext 限制文本框输入的长度和提示信息
    android如何调用dotnet编写的webservice
    iphone 式退出
    几种tabhost的总结(1)
    切换浏览示意图
  • 原文地址:https://www.cnblogs.com/xzoscar/p/4991763.html
Copyright © 2011-2022 走看看