您的位置:首页 > 移动开发 > Objective-C

关于Objection 框架或解耦合方案

2015-11-24 15:30 706 查看
参考链接

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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: