关于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
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
相关文章推荐
- java.util.NoSuchElementException: Timeout waiting for idle object
- java.util.NoSuchElementException: Timeout waiting for idle object
- Objective-C编码规范:26个方面解决iOS开发问题(转)
- Objective-C内存管理教程和原理剖析(四)
- Objective-C内存管理教程和原理剖析(三)
- 怎么解决python中TypeError: can't pickle instancemethod objects的这个错误
- 为什么Git比SVN好
- 目标检测之LibPaBOD(a LIBrary for PArt-Based Object Detection in C++)
- GET请求和POST请求的区别
- rowid,object_id和data_object_id
- Object中的一些方法
- object-ocUI之导航控件
- object-ocUI之导航控件
- 《深度探索C++对象模型(Inside The C++ Object Model )》学习笔记
- objective-c-sort-keys-of-nsdictionary-based-on-dictionary-entries
- LINK - EF6 Update/Insert/Delete model object from outside of DbContext
- websphere7下报错:javax.management.MalformedObjectNameException: Invalid character 的解决办法
- 刨根问底Objective-C Runtime(1)- Self & Super
- Jobject获取json集合
- typeof、instanceof、Object.prototype.toString.call() 区分对象类型