有用 Xamarin 开发 iOS 应用的吗?开发起来体验如何?

2016-11-19 16:56:52 +08:00
 plqws

想要用 Visual Studio 来开发 iOS 应用,所以想到了 Xamarin

所以想问问用 Xamarin 的前辈们: 使用 Xamarin 是不是基本就告别了所有 obj-c swift 写的第三方库? 是不是什么都要重头开始造轮子呢?

11141 次点击
所在节点    iDev
24 条回复
webdev
2016-11-19 17:02:10 +08:00
据我所知 你需要 2 台机器(如果你在 win 上开发) 因为模拟器只能运行在 MAC 上 库应该用不了 毕竟是用 C#开发 他帮你编译而已
bdbai
2016-11-19 17:24:19 +08:00
@webdev 这不是有 Visual Studio for Mac 嘛
beginor
2016-11-19 17:30:14 +08:00
Mac 不是必须的,但是 macOS 是必需的,可以在虚拟机跑,用 vmware+unlocker 装 macOS 已经非常简单了;

iOS 第三方库可以用,不过麻烦的是要做绑定,就是把.h 头文件翻译成 C#,有个半自动的工具, Objective sharpee, 可以干一部分工作, 但是手工调整是少不了的,尤其是你想使用 C#的专属特性时,比如事件,委托, lambda 等, 不过不用担心,流行的库应该都有了, dx , ca 等大牌控件厂商也有了相应的产品;

使用 xamarin 的应该都是.net 老司机了,大量的 C#第三方类库可以直接用,也支持 async/await ,这才是 xamarin 最大的优势;

我认为用 xamarin 开发 iOS 最正确的姿势还是在 Mac 上运行 xamarin studio ,实在离不开 vs 的话,在 mac 上开虚拟机跑 win+vs ,然后连接 Mac 物理机。
beginor
2016-11-19 17:33:26 +08:00
@bdbai 所谓的 vs for mac 就是现在的 xamarin studio ,换了个马甲而已, xamarin studio 已经稳定版,占用资源非常少,推荐使用。
plqws
2016-11-19 17:43:48 +08:00
@beginor 我特别喜欢 Visual Studio + ReSharper 套装,还有 C# 的 async await 特性,所以想要试试用这些开发 iOS 应用。感觉 C# 的第三方库还是比较少而且能在 mono 上跑的就更少了。

当然还有个很重要的原因是 Xcode 实在是不好用,写 Swift 不能 Refactor ,还有一大堆 bug ,所以让我有用 xamarin 的想法了。
kitalphaj
2016-11-19 19:39:02 +08:00
@plqws 你可以试试 AppCode ,最新的测试版已经对 Swift 3 有了很好的支持。
Majirefy
2016-11-19 20:32:58 +08:00
JB 的 Project Rider 也加入了 Xamarin 支持,不过极其原始,还不能用

Xamarin Studio 很好用了, Xamarin Form 更新速度也不错
beginor
2016-11-19 21:12:37 +08:00
@plqws 其实很多库都可以在 mono 上运行了, mono 对.net 服务端支持的非常好,许多著名的开源的类库( spring.net , castle , NHibernate , json.net , log4net , nunit 等)都能完美运行。

就 Xamarin studio 来说,本身也具备全局代码分析能力,还有单元测试集成等功能, 可以说在 C# 代码编辑方面说比单独 VS 要强,但是肯定不如 VS+R# 。
yrq110
2016-11-19 21:17:12 +08:00
plqws
2016-11-19 23:18:07 +08:00
@kitalphaj 半个月前用 AppCode 的时候连语法错误都检测不出来。。
zoumouse
2016-11-19 23:29:49 +08:00
新的 VS 好像有 Windows 上的 mac 模拟器了
plqws
2016-11-20 00:59:33 +08:00
@zoumouse 2017 吗,明儿就去试试
beginor
2016-11-20 10:33:54 +08:00
@zoumouse 那玩意是截 Mac 上 iOS 模拟器屏幕的
yamada
2016-11-20 10:38:43 +08:00
用吧,然后你将面对各种各样来自底层的 bug
plqws
2016-11-20 11:53:22 +08:00
@yamada 能说一说吗,什么样子的底层 bug
zoumouse
2016-11-20 13:44:51 +08:00
@beginor 是的,应该是我看错了。。
yamada
2016-11-20 16:36:38 +08:00
@plqws 各种由 MONO BUG 引起的闪退,内存泄露,以及经常 MONO 老版本运行的好好的,一升级 MONO 反而带来了莫名其妙的 BUG ,最后只能退回老版本等修复,尤其是 httpwebrequest 这类……去 bugzilla.xamarin.com 看看就知道了
zoumouse
2016-11-20 16:43:19 +08:00
beginor
2016-11-20 17:16:25 +08:00
@zoumouse 呵呵, IT 之家的段子手也能信? 在 Windows 上“运行”(其实是看到)的 iOS 模拟器的原理是 emulator remote ,没有 Mac 玩个啥?
zoumouse
2016-11-20 17:51:02 +08:00

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/321712

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX