我应该学习本机iOS开发(Objective-C)还是完善我在Javascript和Titanium Appcelerator中的知识?

val*_*674 8 native titanium appcelerator-mobile ios

基本上我需要你的建议我的好朋友堆:D

在过去的六个月里,我正在使用Titanium Appcelerator移动框架探索/学习/开发iOS应用程序.我的经历大多是好的或非常好的.

Titanium的一些负面部分将是建立时间,尤其是在设备上进行测试时.当仅使用Xcode(本机)时,您的应用程序会立即在设备上启动,而使用Titanium时,您需要等待一段时间(1-2分钟)才能构建应用程序,然后将其安装到设备上(iTunes或iPhone配置)效用).

基本上你可以用Javascript + Titanium进行原生的一切.如果Titanium不支持iOS框架的某些部分,您可以构建本机Objective-C模块并在Javascript代码中使用这些功能.

我觉得现在使用Titanium Appcelerator并使用Javascript构建应用程序非常舒服.我还为iOS构建了一些模块时学到了一些Objective-C.例如.我在我的第一个iOS应用程序Spellery中使用的DeviceMotion.

现在的问题是:

大多数公司只想要本地开发人员并且对Titanium持怀疑态度.Titanium与其他跨平台SDK(例如PhoneGap)不同,因为在这里您实际使用本机组件(按钮,标签等),并且您的应用程序未在WebView中运行.但如果公司想要原生,那么你就不能强迫他们使用Titanium.

既然我想开发移动应用程序作为一项工作,我是否应该抛弃我最近六个月的Titanium深入探索并学习本地编程这些应用程序?

您对此有何看法,因为我认为学习/完善这两者并不重要?

我现在是Appcelerator Titanium的忠实粉丝所以这是一个非常重的决定.

Lin*_*ios 11

坦率地说,我仍然建议学习更多的Objective-C.它是一种非常强大的语言,它旨在让您更轻松地获得Apple认为必需品的许多内容(例如,动画,持久性,数据库,MVC).Apple已经非常严格地围绕Objective-C设计了他们的框架,并且为了真正使用它们,你必须使用他们的语言.另外,你知道其他什么语言?我是一个人,在使用C/C++和脚本语言(Ruby)之后,发现Objective-C变得更加容易.这完全取决于您在应用中需要多少iOS.即使它Titanium可以让用户感觉到iOSy,iOSy代码实际上是非常有趣的编写和维护.它可以是一个非常漂亮的框架.


Fil*_*lic 6

我同意以前的答案所说的一切,你似乎已经接受了回到光明的一面 - 很好的选择!

我想补充一点:不要把这六个月当作浪费.在您使用Titanium的过程中,您已经学习了很多技术细节,以及iOS的可能性和局限性,并且在您切换到Objective-C时应该证明是有用的.


Adn*_*nan 6

啊啊......我不确定我的答案是否会被stackoverflow管理员删除.对不起,我打算花几分钟时间阅读这篇长篇回复(如果你有兴趣继续阅读).

我在2010年创立了自己的公司.我们只在php,mysql,html,jquery网站上工作.随着移动平台越来越受到关注,我们开始研究基于Sencha Touch + PhoneGap的移动应用程序.2011年底,我在Sencha Touch + PhoneGap培训了我的12位开发人员.您可以了解在新框架中学习和培训由12名开发人员组成的团队需要付出多少努力.

在开发了超过两十个基于PhoneGap的专业应用程序之后,我们意识到它远离本机应用程序.只有一个例子就足够了 - PhoneGap应用程序需要更长的时间才能将初始html页面加载到webview中.在启动画面后出现一个空白的白色屏幕(在Android上它更可怕!).在最近的phonegap版本中,它是固定的.但谁正在使用phonegap知道它与真正的obj-c应用程序有多远.我们在PhoneGap + Sencha Touch框架中工作了一年.

我们停止了在PhoneGap工作,开始在Titanium中学习和培训我的12个人.我知道从头开始另一个新框架是多么艰苦的工作.我们继续与钛合作2年,为iOS和Android开发了30多个成功的钛专业应用程序.我们专注于开发钛模块.例如,我们在iOS和Android上开发了PayPal钛模块.(你一定是咯咯地笑,这真是太棒了!它已经由钛团队开发了).不,不使用旧的MPL库.我们使用了最新的Paypal sdk 2.8.0并且没有在线使用它的模块.

2014年中期,我们开始研发Tinder/Lovoo克隆类应用程序.我们为类似的动画开发了一个ti模块(通过实现UIView drawRect).一切都很好.但是当它在iPhone上运行时,设备变得过热并且在动画页面上电池耗尽.我们创建了一个示例演示Xcode应用程序并应用相同的动画,在仪器中测试,一切都很好.内存或处理器没有过载,设备保持冷却,电池性能良好.我们尽一切可能使钛模块更好,没有运气.最后发现钛本身占据了巨大的空间来运行它自己庞大的框架,并且对于每个动作,它都会激发很多代理事件,并继续监听不必要的事件.复杂的UIView动画让它变得疯狂.这只是一个例子 - 在Android上它是一个很长的故事.

为什么公司决定使用Titanium?第一个答案是它的跨平台.你只需在js中编码,它就可以在iOS和Android上运行.哈哈..这么开玩笑!对于真正的专业应用来说,这不是真的.Android版本有很多差异和错误,这是Android版本的更多工作量.实际上,我们永远不会使用与Android相同的iOS代码库精确副本.所以跨平台理论只适用于课堂项目.如果您不相信我制作一个简单的钛安卓项目来捕获图像,请将其上传到服务器上,然后再从服务器再次显示.拍摄星系S5,以横向模式拍摄照片(非纵向模式)(右侧的主页按钮),可以看到图像方向混乱.哦! 我忘了,如果你在服务器上传图像,从钛安卓应用程序,图像扩展名变为.txt

在Obj-C UINavigationController中,popToRootViewControllerAnimated方法是导航回主页的重要功能.这种方法在Titanium中不可用!

我们花了数百小时来解决这些尴尬的问题.我的开发团队厌倦了钛.

你现在肯定会问我,为什么我们一开始没有启动Obj-C?所有钛开发人员的答案都是一样的 - Javascript很简单,Web开发人员已经熟悉它了.这是一个大错误.我们将iPhone应用程序作为Web应用程序.一个Web应用程序在Web浏览器上运行,更特别是在iPhone上运行的iPhone上."Safari"本身就是一个移动应用程序,我们希望Web应用程序应该以相同的速度运行类似的视觉动画,这是不可能的.CSS3动画永远不会与基于iOS矢量的UIView动画相同.

iOS不是框架或库,它是一个操作系统.Titanium是一个用Obj-C编写的框架.你不能在钛中使用Xcode的Storyboard UI设计工具.Xcode开发人员知道UI界面设计的"约束"是多么性感.使用约束的这种视觉吸引力在Titanium中完全缺失.虽然我们团队声称我们可以使用Ti.UI.FILL/SIZE等来完成约束.但是在我们转移到原生的Obj-C后,我们知道这个约束系统有多强大!

我只是把我的头发拉出来后悔为什么我害怕看着那些用方括号的Obj-C语法并跳回到钛金属.感觉就像你在几十年前就已经过去几十年了,只是看着Obj-C不熟悉的语法.幸运的是Swift在那里,现在在Xcode中编码更加容易.虽然需要一些时间来获得现有的流行和强大的Obj-C库,如AFNetworking,MBProgressHUD,OpenCV迁移到Swift.

说实话,我真的觉得应该禁止Titanium,PhoneGap,Xamarin等跨平台框架.他们的执照应该停止.钛是否为您提供本机iOS或Android无法提供的任何额外功能?相反,有更少的功能和更多的错误.我不明白为什么,如何在这种现代化的前沿技术上将人们拉回到过去,没有人能阻止他们!如何指导开发人员走向错误方向是合法的?如果"今天"发布iOS 9,Titanium会在下周为您提供所有新API吗?决不.他们只是阻止你,让你必须使用他们有限的错误API,你需要为模块付费,这可以很容易地用本机代码完成.

如果你对javascript了解得很好,逻辑意义上很好,请相信我你可以在很短的时间内学习Obj-C.通过时间和努力,您将失去调试钛问题,您可以在本机Obj-C中变得更有效率.嗯..关于android我不会说那么高.Cos Android永远不会与iOS相比.iOS诞生于Mac OS,一个完善的桌面操作系统.你知道android.

不要陷入跨平台困境的陷阱.Titanium API的负载仅适用于iOS,您知道为什么,Android设备便宜,硬件便宜,无法顺利运行动画.

最后,远离任何类型的平台并坚持使用纯粹的原生操作系统,无论一开始有多难,从长远来看,你都会得到很好的回报,相信我!

对于Titanium团队,我查看了您的Obj-C和Java源代码.我尊重你们,你们在Obj-C,Java,node.js,python和javascript方面确实非常专业且经验丰富.但为什么?你为什么要把人引向错误的方向?你非常清楚浪费了多少时间来构建一个钛金属android/ios模块并进行测试.你为什么不把你的努力变得更好.