我应该学会原生iOS开发(Objective-C的)或完善我在Javascript和钛Appcel

2019-06-25 19:31发布

基本上,我需要你的建议我的朋友堆栈:d

在过去的六个月里,我正在探索/学习/发展与iOS应用钛Appcelerator的移动框架。 我的经验大多是好或非常好。

钛的一些负面的部分将是一个设备上测试时建立的时候,更是如此。 当仅使用Xcode中(原生),您的应用程序将立即启动的设备上,同时用钛,你必须等待你的应用程序建立一段时间(1-2分钟),然后到一个设备(iTunes或iPhone配置上安装它效用)。

基本上一切,你可以做你本身可以用JavaScript +钛做的。 如果钛不支持的iOS框架的某些部分,你可以建立一个原生的Objective-C模块,并在你的JavaScript代码的功能。

我感到很舒服,现在使用Appcelerator的钛使用JavaScript开发应用程序。 此外,我学会了一些Objective-C的同时建立了几个模块适用于iOS。 例如。 DeviceMotion我在我的第一个iOS应用使用Spellery 。

现在的问题是

大多数公司希望唯一的本地开发者和怀疑论者是钛。 二是从其他跨平台软件开发工具包(如PhoneGap的),因为在这里你实际使用本地组件(按钮,标签等)不同,您的应用程序是不是在运行网页视图。 但是,如果公司希望本土那么你不能强迫他们使用钛。

因为我想开发移动应用作为一个工作,我应该只是把我的过去六个月的钛密集的探索与学习本地编程那些应用程序吗?

你对这个想法,因为我看到在学习/完善他们两个没有意义呢?

我Appcelerator的钛的一个非常大的风扇,现在所以这是一个非常沉重的决定。

Answer 1:

坦率地说,我仍然会建议学习一些Objective-C的。 这是一个非常强大的语言,它的设计,让您苹果更容易认为必需品的东西(如动画,持久性,数据库,MVC)。 苹果已经设计了框架围绕Objective-C的非常紧密,而且要真正用好,您必须从他们的语言中使用它们。 另外,你知道还有什么其他的语言吗? 拿我来说,发现的Objective-C更容易从C / C ++和脚本语言(Ruby)的到来之后。 这一切真的取决于你在你的应用程序有多少iOSness希望。 即使它钛可以使用户端的感觉iOSy,iOSy代码实际上是非常有趣的编写和维护。 它可以是一个相当漂亮的框架。



Answer 2:

我同意一切都在以前的答案说,你似乎已经接受了回来光侧 - 不错的选择!

我只想补充一点:在这六个月内不要看起来被浪费。 在你的时间与钛,你已经学到了很多的技术细节,以及可能和iOS的限制,当你切换到Objective-C的应该是有用的。



Answer 3:

Ahhhmmmm ......我不知道我的回答是否会通过计算器管理员被删除。 请原谅我,我会拿你读这篇长响应几分钟(如果你有兴趣继续阅读)。

我开始了自己的公司在2010年我们曾在PHP,MySQL和HTML,jQuery的基础只有网站。 随着移动平台是越来越多的关注,我们开始在煎茶触摸+ PhoneGap的基于移动应用的工作。 在2011年底,我在煎茶触摸+ PhoneGap的训练了我的12个开发商。 您可以了解有多少精力是学习,培养了团队的12家开发商在一个新的框架。

开发两个以上的数十位专业的基于PhoneGap的应用后,我们意识到这是远离本地应用程序。 一个例子是不够的 - PhoneGap的应用程序需要较长的时间来初始HTML页面加载到web视图。 在空白屏幕中只出现闪屏之后(在Android更可怕!)。 在最近的PhoneGap版本上是固定的。 但谁与PhoneGap的工作非常清楚地知道它是如何远离真正的OBJ-C的应用程序。 我们曾在PhoneGap的+煎茶触摸框架为一年。

我们停在PhoneGap的工作,开始学习和训练我的12个人中钛。 我知道多少辛勤工作是从头开始另一个新的框架。 我们一直与钛工作了2年,开发了钛30+成功的专业应用两个iOS和Android。 我们得到了开发钛模块的专家。 只是举例,我们开发了iOS和Android的贝宝钛模块。 (您必须傻笑,什么是如此之大,这种事的!它已经由钛团队开发)。 不,不是使用旧MPL库。 我们使用了最新的SDK宝2.8.0并没有使用它没有模块可在网上。

2014年中期,我们开始在火种/ Lovoo克隆类型的应用程序工作。 我们开发了类似动画的Ti模块(通过实施的UIView的drawRect)。 一切工作正常。 但是,当它在iPhone上运行,该设备变得过热和电池排出显着动画页面上。 我们创建了一个示例演示的Xcode应用程序,应用了相同的动画,在仪器进行测试,一切都很好。 上存储器或处理器没有过载,设备保持凉爽,电池性能都很好。 我们想尽办法,使其在钛模块和没有运气更好。 最后发现钛本身需要巨大的脚印来运行它自己的笨重的框架和每一个动作,它激发了很多代理活动,并不断监听不必要的事件。 复杂的UIView动画使其疯狂。 这只是一个例子 - 在Android这是一个很长的故事。

为什么公司决定使用钛? 第一个答案是它的跨平台。 你只是在JS代码,它运行在iOS和Android。 哈哈..这样的玩笑! 这不是真的一个真正的专业应用程序。 有很多的分歧和错误的Android版本,它是对Android版本更多的工作负载。 ,实际上我们不可能使用相同的代码库的iOS确切的Android复制。 因此,跨平台的,这种理论只对类项目是真实的。 如果你不相信我做一个简单的钛Android项目来捕捉图像,上传的服务器,然后从服务器再次显示。 以一个星系S5,采取横向右模式(在右侧home键)的照片(不能在肖像模式),你可以看到图像的方向得到弄糟。 哦! 我忘了,从钛Android应用程序,如果你上传的图片服务器上时,图像扩展变得.TXT

在对象 - UINavigationController的popToRootViewControllerAnimated方法是一个重要的功能,以导航回到主页。 这种方法非常不提供钛!

我们花了数百个小时来修复这些那种尴尬的问题。 我的开发团队厌倦了钛。

当然你会问我现在为什么在地球上,我们并没有从头开始的OBJ-C? 答案是从所有的钛开发商一样 - JavaScript是容易和Web开发人员已经熟悉它。 这是一个大错误。 我们以iPhone应用程序的Web应用程序。 网络应用程序上的Web浏览器上运行,更特别在iPhone上运行iPhone的Safari浏览器中。 “野生动物园”本身就是一个移动应用程序,我们期望Web应用程序应该以同样的速度,这是从来没有能够运行为相似的视觉动画。 CSS3动画永远是相同的iOS基于矢量的UIView动画。

iOS的不是一个框架或库,它是一个操作系统。 二是写的OBJ-C的框架。 你不能在钛使用Xcode的故事板UI设计工具。 Xcode的开发人员都知道的“约束”如何性感是UI界面设计。 并采用约束的这种视觉效果是钛全部不见了。 虽然TI团队要求,我们可以使用Ti.UI.FILL / SIZE等做了限制的东西,但之后我们搬到了原生对象 - 我们知道这个约束系统是多么的强大!

我只是拉我的头发,后悔为什么我害怕看那些对象 - 语法与方括号,并跳回到钛。 感觉就像你在现代只盯着的OBJ-C的陌生语法要追溯到几十年前。 幸运的斯威夫特是存在的,它在Xcode现在更容易代码。 虽然它会需要一些时间让现有的流行和强大的OBJ-C库,例如AFNetworking,MBProgressHUD,OpenCV的迁移到斯威夫特。

说实话,我真的觉得钛,的PhoneGap,Xamarin等跨平台的框架,应该被禁止。 他们的执照应该被停止。 钛是否给你任何额外的功能,是不是在原生iOS或Android可用? 相反,也有办法少得多的功能和更多的错误。 我不明白为什么,怎么样在这个现代尖端技术他们拉人回老天,没有人阻止他们! 它怎么可能是合法的,引导开发商错误的方向? 如果iOS版9上映的“今天”将钛给大家下周新的API? 决不。 他们只是抱着你回来,让你势必会动用自己有限的集越野车的API,你需要支付模块,可在本机代码很容易做到。

如果你知道的JavaScript良好,良好的逻辑意义,相信我,你可以在很短的时间内学习的OBJ-C。 通过时间和努力,你会失去调试钛的问题,你也可以成为本机的OBJ-C更有效。 嗯..关于Android的我就不说那么高。 COS的Android与iOS从未compareable。 iOS版是从Mac OS,一个完善的桌面操作系统诞生了。 你知道关于Android。

不要陷入跨平台两难的陷阱。 钛的API的负荷是仅适用于iOS,你知道是什么原因,Android设备很便宜,硬件是便宜的,不能流畅运行的动画。

最后,从任何一种平台望而却步,坚持以纯天然的操作系统,无论怎么说这是在开始的时候,你会得到很好的长远回报,相信我!

到钛的球队,我查看了您的OBJ-C和Java源代码。 我尊重你们,你确实是非常专业和的OBJ-C,Java和node.js中,蟒蛇和JavaScript经验丰富。 但为什么? 为什么你领导的人错了方向? 你非常清楚地知道有多少时间被浪费打造钛的Android / IOS模块并进行测试。 你为什么不把你的努力,到更好的东西。



Answer 4:

我敢打赌,很多人会附和职位,以其他的“重复”的问题,以及自己的肆虐意见。 所以,我会留给他们,只需要提供我自己的经验。

我认为有充分的理由知道,这两个深。 这是因为:

钛可以让你真正快速构建应用程序,它每天都在变得越来越坚实。 我最近建立了一个应用钛,本地人,和几个竞争对手框架之间的直接比较的开发时间。 本机是大概一周半。 竞争者是约2周。 二是3天。 这给了我一大堆的时间与应用程序发挥,使产品一大堆比竞争对手做得更好。 我也能得到它在Android和移动网络的工作一样好。 我有大约5基于平台的条件语句,所以代码具有良好的奇偶校验。

本地有你带出来的优势。 我想补充一点,你也可以访问任何平台所提供的。 了解本地会告诉你如何构建应用程序(甚至使用JavaScript时),以及如何构建这些应用程序模块。 您也可以尝试开辟钛产生的Xcode项目,并通过直接在设备上运行。 你可能需要做一个干净的构建(在Xcode中),但它比通过iTunes运行更快。

另外,我想的Objective-C是在其本身和一个美丽的语言。 这是从我(的Java,C#,PHP,VB,和其他一些人)“长大”的代码截然不同。 过了一段时间才能适应它,但我很高兴,因为我投入的时间。

声明:我Appcelerator的工作。 希望你能够区分上面的观点和事实。



Answer 5:

看看招聘信息,你有兴趣,并应回答你的问题。 如果雇主在寻找的XCode的专业知识和钛没有兴趣再集中的XCode ...



Answer 6:

要添加到@ Linuxios的出色答卷:

既然你说出你想进入移动开发作为一种职业,那么最肯定学习Objective-C时,Xcode和iOS的SDK。 最后,这将是你的,你的雇主,并在一定程度上你的客户的需求。 但是iOS的理解是必不可少的。

此外,根据我的经验,如果应用程序是复杂的,本地将要走的路,如果诺特尔原因,而不是便于调试,并为你的状态,更短的构建时间。

UPDATE:还有一件事添加,如果性能是关键(即游戏),那么本机(C / C ++ / Objective-C的),是要走的路。



Answer 7:

从我的角度来看,它总是非常有用的学习本机应用程序的开发,iOS设备以及Android系统。 正如你已经提到,大多数公司都在寻找原生应用开发者,因为他们不希望依赖于外部的公司或框架比平台的实际开发者太多,其他(Android,iOS和等等)。 我也认为,一旦你有能力开发原生应用的,它是一种方式比使用诸如钛或PhoneGap的框架更容易。 而且这是一件好事,以提高自己的技能,特别是原生应用开发是一个场,在这里你可以学到很多东西。 不只是语言,还对底层的手机操作系统的架构。 特别是用于苹果,我认为这是重要的学习开发本地。 他们有自己的开发人员门户非常好的资源,有你也学到了很多关于预期的用户交互设计。

最后但并非最不重要的,我建议你用斯威夫特继续下去。 这是一个伟大而强大的语言,许多固定的Objective-C的薄弱点。 你基本上可以开始与斯威夫特形式从无到有,而不需要的Objective-C的。 完整的可可API是通过SWIFT访问。 但是,如果你愿意,你仍然可以结合Objective-C和斯威夫特。 例如,如果你需要使用未在斯威夫特还没有实现一个外部库。

希望我可以帮助你一点。



文章来源: Should I learn native iOS development (Objective-C) or perfect my knowledge in Javascript and Titanium Appcelerator? [closed]