变相怪杰 发表于 2015-1-18 11:43:09

IOS编程:Somya Jain谈从C#到到Objective-C仓酷云

打开.xib的文件打开的就是IBIB和代码交互用的是IBActionIBOutlet这些标记这些标记追踪到他们的定义其实对编译器来说什么都不表示几年前掌上电脑很年夜水平上就是一别致事物和玩具。但现在,贸易界正产生着一场严重变更。很多传统上在XAML,Flex或HTML上编写使用的贸易公司俄然发明,iPad使用有着数量伟大的需求。这些需求不止来自游戏,同时也存在良多标价为几十万乃至上百万的项目。只管.Net和Java在将来几年仍然会活泼于后端平台。可是关于那些乐意实验的团队,iOS市场仍是有良多时机。
我们与SomyaJain,一个努力于此的开辟职员,议论了怎样从C#过分到Objective-C。
SomyaJain:关于挪动编程我学到的第一点是(经由过程不休理论总结出来的),它与服务器或桌面开辟有着很年夜的分歧。挪动设备RAM空间小,网速慢,屏幕小;特别CPU,绝对慢。只管云云,人们却等候挪动设备供应更高的用户体验。人们能够很简单地在使用商铺将你的使用与别的使用举行对照。假如你的使用仍是停止在作坊级,那就很难具有合作力。
我进修Objective-C就是为了编写iPhone及iPad使用。由于具有C++/Java/C#背景,其进修并不是那末坚苦。年夜部分观点都能复杂互通。一入手下手,我实验经由过程遵守书本和浏览文档来进修,可是,我发明更快的进修办法是真正投进到项目中。
以下几点是了解Objective-C的关头。只管它与C#有良多不异的地方,但仍然有渺小的不同。
内存办理
起首必要提的就是内存办理。关于iOS开辟,了解alloc,release和autorelease是相当主要的。可是跟着ARC的引进,它们大概会变得不那末主要。只管ARC会在某些中央误导你,但它将匡助你了解其内含的道理。
内存办理成绩,好比过分开释内存,将形成使人腻烦的BAD_ACCESS溃散;另有不开释内存,酿成的难以办理的内存泄露。别的,他们对使用的功能和可用性也有很年夜影响。学会怎样疾速定位息争决这些成绩十分关头,我倡议学会怎样利用NSZombies对象及功能调试工具Instruments来调试这些成绩。
别的,Objective-C撑持渣滓接纳,但它仅撑持macosx,而不撑持iOS。
InfoQ:增加和开释对象听起来十分像COM援用计数,但“主动开释”又是怎样回事呢?
Somya:从基本上,你会利用主动开释前往一个不是由创立对象办理的对象。经由过程挪用主动开释,将该对象增加到主动开释池中,并在清空池时将对象开释。假如承受对象想要利用它,必要保存其值。以下是更多来自apple文档的信息:
每一个轮回的每次轮询入手下手,使用工具箱城市在主线程中创立一个主动开释池,在并最初将其开释,以开释实行事务时发生的主动开释对象。
InfoQ:甚么是NSZombies?
Somya:NSZombies能够用来检测之条件到的内存过分开释成绩。在主动开释对象上不屈衡开释是罕见征象。现实上,终极开释时,统统都事情一般,对象也被从头分派了;可是当清空主动开释池时(有的时分随后才产生),使用会由于实验往主动开释一个已被开释的对象而溃散。正因对象自己不存在,以是很难定位出真正成绩地点。恰是对应上述成绩,提出了NSZombie对象。经由过程设置NSZombieEnabled标记将任何已开释对象转化为NSZombie,以代替原始开释操纵。如许我们就能够在恣意挪用NSZombie对象开释或主动开释处设置断点,以定位到成绩代码路径。
InfoQ:您能注释下甚么是ARC,为何您以为它可以使内存办理更复杂?
Somya:准绳上,经由过程同意利用ARC,编译器会主动为你保存或开释哀求。这意味了我们不用再往忧虑内存办理了,可是履历告知我:现实正与之相反。我还没利用过ARC,以是没法做过量批评。
办法挪用VS动静
两个言语间别的一个渺小不同是:C#中办法挪用是静态的,绑定产生在编译时(临时疏忽静态编译)。Objective-C动静则在运转时静态绑定对象,而非编译时。这意味着你能够发送恣意界说好的动静给对象,编译器都不会报错。毛病会在运转时抛出。
成心思的是,个中有一机制:就算动静没有被类实行,也会被截取。这一般产生在多承继,日记和往静态载进代码分派动静等初级计划中。
历程池VS中心调剂
从高层来讲,它们的界说是一样的:一个用于办理历程池的体系。关于该点,我以为iOS的确做得很杰出。起首,它撑持分歧优先品级,乃至历程池也付与我们更优的受权办理。好比我们能够鄙人载图片时利用更初等级的历程,以使背景下载不影响我们的UI。
另外一优异特性是分派组同意同时提交一切义务,但只在全体完成时才关照。
以下观点在C#和Objetive-C中几近逐一对应:


[*]扩大体例(C#)<==>种别(iOS)
[*]接口(C#)<==>协定(iOS)
[*]托付(C#)<==>块(iOS)
C#中我吊唁的:

[*]泛型
[*]LINQ
[*]不必创立头文件,将代码置于统一文件中。
给C#开辟者的别的倡议:


[*]从Resharper(C#)开辟者那懂得AppCode(Objetive-C)
[*]Xamarin的MonoTouch团队将C#引进到iOS设备中。
InfoQ:对iOS开辟,您倾向哪一种IDE呢?
Somya:固然是AppCode了,我十分熟习它所带来的代码主动完成和重构撑持,就好像C#中利用过的一样。我还喜好它可以凸起显现那些潜伏的内存办理成绩,关于iOS的初学者十分有匡助。一世界来,那年夜年夜进步了我的临盆力,几乎不费吹灰之力。
InfoQ:您说您惦念泛型。那Objective-C供应相似工具吗,仍是必需象.Net1.0那样必需利用非范例化汇合?
Somya:是的,我们利用相似1.0中非范例化汇合。可是因为静态动静绑定,我们无需中断对象往发送动静。
InfoQ:Objective-C是不是有哪些特性您但愿C#能采取呢?
Somya:在言语层上应当没甚么。我还未曾发明有哪些明显特征让我以为C#也应当具有。可是在API层上,我以为apple的确在iOS高低了很好的工夫。只管其API看上往有点严厉,可是的确计划地很好。好比在NavigationController和UITabBarController里,经由过程复杂标记便可在视图切换时完成动画效果。而在android和WP7中,这要损耗很鼎力气。
InfoQ:怎样对照在iOS中,和在WinForms或Silverlight中创立用户界面呢?
Apple有两个次要UI库:UIKit和GLKit。GLKit次要存眷基于OpenGL的使用和游戏。UIKit更靠近于WinForms/WPF,它有相似textboxes文本框,labels标签,dropdowns下拉列表等尺度控件。这些UIViews(.Net中的控件)易拓展成或组分解试图,相似于.Net中创立自界说控件和用户控件。可是,iOS只撑持流动的基于坐标的结构,以是我们必需明白详细巨细及每一个视图在其父试图中的地位。其他UI界说就对照类似,好比:


[*]仍然有视图布局
[*]当今后台历程导进数据时,仍然要当心;并将其整合到主历程中往。
[*]需懂得视图性命周期等。
实在我最吊唁的是对数据绑定的撑持。
关于受访者


<br>SomyaJain有着11年的企业级软件开辟员、手艺向导及架构师的履历,他如今住在纽约,是一名挪动自在开辟者(包含iOS,Android和WindowsPhone)。他次要存眷于跨平台挪动使用。

父类是NSObjectUIKit里最底层的库可以响应一些触摸事件设置焦点等功能UIView父类是UIResponder所有View的父类方法太多了大部分很有用这个不赘述了

不帅 发表于 2015-1-21 13:08:03

iPhone文件系统:创建、重命名以及删除文件,NSFileManager中包含了用来查询单词库目录、创建、重命名、删除目录以及获取/设置文件属性的方法(可读性,可编写性等等)。

活着的死人 发表于 2015-1-25 15:59:34

其实在培训的过程中,学习到最多的就是查资料的方式,当时感觉老师好坑,什么都不告诉我们,让我们自己去查,但是现在觉得还是要自己解决问题,这样才能理解的更加深入。

冷月葬花魂 发表于 2015-1-25 22:02:30

培训时可以选择安卓,iOS,Java,因为实习的时候我选了安卓,当时实习时间只有三周,学的晕头转向,而java我也没学过,iOS的基础是C语言,这个大学里还是学过的,于是选择了iOS。

谁可相欹 发表于 2015-2-1 08:08:18

培训时可以选择安卓,iOS,Java,因为实习的时候我选了安卓,当时实习时间只有三周,学的晕头转向,而java我也没学过,iOS的基础是C语言,这个大学里还是学过的,于是选择了iOS。

admin 发表于 2015-2-3 11:40:18

其次学习方法和学习心态很重要,在学习当中应该保持一颗良好的心态。应该借鉴别人好的学习方法,大家互相帮助,取长补短。

仓酷云 发表于 2015-2-8 20:25:40

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

再见西城 发表于 2015-2-10 01:46:05

培训时可以选择安卓,iOS,Java,因为实习的时候我选了安卓,当时实习时间只有三周,学的晕头转向,而java我也没学过,iOS的基础是C语言,这个大学里还是学过的,于是选择了iOS。

爱飞 发表于 2015-2-12 09:27:39

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

山那边是海 发表于 2015-2-26 07:26:47

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

小魔女 发表于 2015-3-6 10:52:02

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

第二个灵魂 发表于 2015-3-11 10:10:21

看完这个你就可以有多种选择来踏入做应用的阶段

蒙在股里 发表于 2015-3-14 05:24:32

从C语言入门,因为IOS开发用的是OC语言,是在C基础上的,不过也跟C不是很搭界,你可以直接学习OC语言也可以,

若相依 发表于 2015-3-21 00:18:47

特别是在校的学生,都存在一个小小的尴尬——虽然学习iOS开发的热情高涨,但由于没有多余的银子购买昂贵的Mac电脑而踟蹰不前。其实,针对初学者,如果想进入iOS开发的天地

莫相离 发表于 2015-4-3 21:41:44

众多研发人员积极参与到iOS平台的开发中来也就不足为奇了。

变相怪杰 发表于 2015-4-30 08:10:41

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

精灵巫婆 发表于 2015-5-5 04:16:09

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

透明 发表于 2015-5-11 00:38:48

看完这个你就可以有多种选择来踏入做应用的阶段

金色的骷髅 发表于 2015-6-4 16:59:33

其实在培训的过程中,学习到最多的就是查资料的方式,当时感觉老师好坑,什么都不告诉我们,让我们自己去查,但是现在觉得还是要自己解决问题,这样才能理解的更加深入。

灵魂腐蚀 发表于 2015-6-6 23:12:33

中国如今已然发展成为一个软件大国,软件人才的数量跃居全球之首。当然,在苹果平台的开发领域,也保持了相当强劲的发展势头。然而,很多初入iOS开发门槛的开发者,
页: [1]
查看完整版本: IOS编程:Somya Jain谈从C#到到Objective-C仓酷云