精灵巫婆 发表于 2015-1-18 11:32:26

IOS编程:利用objection来模块化开辟iOS项目仓酷云

最近一直都在学习有关ios(苹果系统)的知识,而学习ios的最好方法就是研究iPhone和ipad。因为iPhone和iPad的应用程序都是用Objective-C语言来开发的,所以在接触ios之前,我必须有一定的Objective-C基础。objection是一个轻量级的依附注进框架,受Guice的启示,GoogleWallet也是利用的该项目。「依附注进」是面向对象编程的一种计划形式,用来削减代码之间的耦合度。一般基于接口来完成,也就是说不必要new一个对象,而是经由过程相干的把持器来猎取对象。2013年最火的PHP框架laravel就是个中的典范。
假定有以了局景:ViewControllerA.view里有一个button,点击以后push一个ViewControllerB,最复杂的写法相似如许:
-(void)viewDidLoad{;UIButton*button=;button.frame=CGRectMake(100,100,100,30);;;;}-(void)buttonTapped{ViewControllerB*vc=[init];;}如许写的一个成绩是,ViewControllerA必要importViewControllerB,也就是对ViewControllerB发生了依附。依附的工具越多,保护起来就越贫苦,也简单呈现轮回依附的成绩,而objection恰好能够处置这些成绩。
完成办法是:先界说一个协定(protocol),然后经由过程objection来注册这个协定对应的class,必要的时分,能够猎取该协定对应的object。关于利用方无需体贴究竟利用的是哪一个Class,归正该有的办法、属性都有了(在协定中指定)。如许就往除对某个特定Class的依附。也就是一般所说的「面向接口编程」。
JSObjectionInjector*injector=;//UIViewController<ViewControllerAProtocol>*vc=;//vc.backgroundColor=;//UINavigationController*nc=[initWithRootViewController:vc];self.window.rootViewController=nc;

[*]猎取默许的injector,这个injector已注册过ViewControllerAProtocol了。
[*]猎取ViewControllerAProtocol对应的Object。
[*]拿到VC后,设置它的某些属性,好比这里的backgroundColor,由于在ViewControllerAProtocol里有界说这个属性,以是不会有warning。
能够看到这里没有援用ViewControllerA。再来看看这个ViewControllerAProtocol是怎样注册到injector中的,这里触及到了Module,对Protocol的注册都是在Module中完成的。Module只需承继JSObjectionModule这个Class便可。
@interfaceViewControllerAModule:JSObjectionModule@end@implementationViewControllerAModule-(void)configure{toProtocol:@protocol(ViewControllerAProtocol)];}@end绑定操纵是在configure办法里举行的,这个办法在被增加到injector里时会被主动触发。
JSObjectionInjector*injector=;//injector=injector?:;//injector=init]];//;//

[*]猎取默许的injector
[*]假如默许的injector不存在,就新建一个
[*]往这个injector里注册我们的Module
[*]设置该injector为默许的injector
这段代码能够间接放到+(void)load里实行,如许就能够制止在AppDelegate里import各类Module。

很少去思考,没有去多问几个为什么。这是学习的大忌,我认识到了自己学习方法上的错误。孔子说,学而不思则罔,思而不学则殆。一点也没错,学和思是要结合的,这样才能进步。现在回想一下,我学到了什么?自己也无言以对了。

愤怒的大鸟 发表于 2015-1-21 09:39:40

每个行业都一样,想要一天学有所成是不可能的,一定要做好努力的准备,做ios不是简单的学会oc语言。不怕多走弯路,就怕不肯动手。

谁可相欹 发表于 2015-1-24 15:38:16

中国如今已然发展成为一个软件大国,软件人才的数量跃居全球之首。当然,在苹果平台的开发领域,也保持了相当强劲的发展势头。然而,很多初入iOS开发门槛的开发者,

莫相离 发表于 2015-1-29 14:22:32

首先是基础,在汉昌的课程非常全面。从object—c到最后的毕业项目,基本上方方面面都涉及到了,我是一名非计算机专业的学生,起初学习还有点吃力,因为基础知识薄弱。经常像听天书

因胸联盟 发表于 2015-2-6 01:48:28

中国如今已然发展成为一个软件大国,软件人才的数量跃居全球之首。当然,在苹果平台的开发领域,也保持了相当强劲的发展势头。然而,很多初入iOS开发门槛的开发者,

金色的骷髅 发表于 2015-2-9 08:51:45

iPhone文件系统NSFileManager讲解是本文要介绍的内容,主要是通过iphone文件系统来学习NSFileManager的使用方法,具体内容来看本文详解。

老尸 发表于 2015-2-10 18:20:51

中国如今已然发展成为一个软件大国,软件人才的数量跃居全球之首。当然,在苹果平台的开发领域,也保持了相当强劲的发展势头。然而,很多初入iOS开发门槛的开发者,

乐观 发表于 2015-3-1 13:47:45

同很多iOS开发者一样,我也是通过培训进入到iOS开发这个行业,开始没有打算培训,只准备自己学习一些计算机编程相关的知识,毕业时找一份编程相关工作(本人是信息与计算科学这个专业,是数学系)。

爱飞 发表于 2015-3-10 18:12:06

这个办法就是在WindowsXP或Win7的电脑上,使用vmware虚拟机来搭建一个真实的Mac OS X环境。

小妖女 发表于 2015-3-11 20:53:12

在百度搜索你想要了解的类名(苹果的cocoa和cocoatouch框架的类名很有特点很容易搜到,前缀都是NS or UI),看别人写的博客详解

简单生活 发表于 2015-3-16 20:37:23

培训的时候很痛苦,每天要待12个小时,上午讲课,下午和晚自习解决作业,看文档,学习的时候感觉就是资料太少,而且看着资料也不明所以,非常痛苦,

柔情似水 发表于 2015-3-18 08:56:05

然而,在vmware软件环境下,安装Mac OS X操作系统也是一件非常复杂的事情,而且还有可能花费了大量时间,最后却跑不起来。笔者也是经过了大量的实践,

小女巫 发表于 2015-3-19 20:43:15

才在自己的Windows电脑上安装配置成功了一个完美的Mac OS X Lion(10.7.4)系统,而且下载了Xcode4.5的最新版本。虽然不能实机调试,但是作为iOS开发学习已经非常完美了。

若相依 发表于 2015-3-24 16:34:32

因为我们老师也是自学的,给我们讲课说的最多的就是百度,谷歌,查文档。

蒙在股里 发表于 2015-3-25 11:18:42

好处就是运行速度会变快,ios6针对系统的优化进一步加强了,很多网友测试ios6,第一感觉就是速度快,而且ios69会有一些新功能,新浪微博,facetime支持3G网等等。。弊端就是,现在的ios6只能算是正式版本的第一个版本,bug很多,不少人刷完ios6都出现了很多毛病,开不开机,缺少图标等等。。最好现在不要升级,等官网放出下一个版本的时候,再选择升级。。。

只想知道 发表于 2015-4-20 06:39:30

每个行业都一样,想要一天学有所成是不可能的,一定要做好努力的准备,做ios不是简单的学会oc语言。不怕多走弯路,就怕不肯动手。

透明 发表于 2015-5-5 14:41:29

到大三时,学院与我去培训的机构成立了实习基地,并让我们寒假去实习了一段时间,感觉还不错,于是在大四的时候去培训了

admin 发表于 2015-5-7 01:59:58

边吃零食边看Stanford的视频教程

再见西城 发表于 2015-6-12 19:28:17

开始的时候甚至想放弃,不过想想自己的未来,只能咬牙坚持,课下就不停的缠着老师。放学就补基础,这些基础的东西没有速成的,只有刻苦努力。我是后来发现的,转变自己的心态,不要读书看资料当成一种痛苦

活着的死人 发表于 2015-6-13 13:07:31

边吃零食边看Stanford的视频教程
页: [1] 2
查看完整版本: IOS编程:利用objection来模块化开辟iOS项目仓酷云