V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
iOS 开发实用技术导航
NSHipster 中文版
http://nshipster.cn/
cocos2d 开源 2D 游戏引擎
http://www.cocos2d-iphone.org/
CocoaPods
http://cocoapods.org/
Google Analytics for Mobile 统计解决方案
http://code.google.com/mobile/analytics/
WWDC
https://developer.apple.com/wwdc/
Design Guides and Resources
https://developer.apple.com/design/
Transcripts of WWDC sessions
http://asciiwwdc.com
Cocoa with Love
http://cocoawithlove.com/
Cocoa Dev Central
http://cocoadevcentral.com/
NSHipster
http://nshipster.com/
Style Guides
Google Objective-C Style Guide
NYTimes Objective-C Style Guide
Useful Tools and Services
Charles Web Debugging Proxy
Smore
plqws
V2EX  ›  iDev

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

  •  
  •   plqws ·
    wspl · 2016-11-19 16:56:52 +08:00 · 11354 次点击
    这是一个创建于 2960 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

    24 条回复    2017-02-17 12:28:01 +08:00
    webdev
        1
    webdev  
       2016-11-19 17:02:10 +08:00 via iPhone
    据我所知 你需要 2 台机器(如果你在 win 上开发) 因为模拟器只能运行在 MAC 上 库应该用不了 毕竟是用 C#开发 他帮你编译而已
    bdbai
        2
    bdbai  
       2016-11-19 17:24:19 +08:00 via Android
    @webdev 这不是有 Visual Studio for Mac 嘛
    beginor
        3
    beginor  
       2016-11-19 17:30:14 +08:00 via Android   ❤️ 1
    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
        4
    beginor  
       2016-11-19 17:33:26 +08:00 via Android   ❤️ 1
    @bdbai 所谓的 vs for mac 就是现在的 xamarin studio ,换了个马甲而已, xamarin studio 已经稳定版,占用资源非常少,推荐使用。
    plqws
        5
    plqws  
    OP
       2016-11-19 17:43:48 +08:00
    @beginor 我特别喜欢 Visual Studio + ReSharper 套装,还有 C# 的 async await 特性,所以想要试试用这些开发 iOS 应用。感觉 C# 的第三方库还是比较少而且能在 mono 上跑的就更少了。

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

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

    就 Xamarin studio 来说,本身也具备全局代码分析能力,还有单元测试集成等功能, 可以说在 C# 代码编辑方面说比单独 VS 要强,但是肯定不如 VS+R# 。
    plqws
        10
    plqws  
    OP
       2016-11-19 23:18:07 +08:00
    @kitalphaj 半个月前用 AppCode 的时候连语法错误都检测不出来。。
    zoumouse
        11
    zoumouse  
       2016-11-19 23:29:49 +08:00
    新的 VS 好像有 Windows 上的 mac 模拟器了
    plqws
        12
    plqws  
    OP
       2016-11-20 00:59:33 +08:00 via iPhone
    @zoumouse 2017 吗,明儿就去试试
    beginor
        13
    beginor  
       2016-11-20 10:33:54 +08:00 via Android
    @zoumouse 那玩意是截 Mac 上 iOS 模拟器屏幕的
    yamada
        14
    yamada  
       2016-11-20 10:38:43 +08:00 via Android
    用吧,然后你将面对各种各样来自底层的 bug
    plqws
        15
    plqws  
    OP
       2016-11-20 11:53:22 +08:00
    @yamada 能说一说吗,什么样子的底层 bug
    zoumouse
        16
    zoumouse  
       2016-11-20 13:44:51 +08:00
    @beginor 是的,应该是我看错了。。
    yamada
        17
    yamada  
       2016-11-20 16:36:38 +08:00
    @plqws 各种由 MONO BUG 引起的闪退,内存泄露,以及经常 MONO 老版本运行的好好的,一升级 MONO 反而带来了莫名其妙的 BUG ,最后只能退回老版本等修复,尤其是 httpwebrequest 这类……去 bugzilla.xamarin.com 看看就知道了
    zoumouse
        18
    zoumouse  
       2016-11-20 16:43:19 +08:00
    beginor
        19
    beginor  
       2016-11-20 17:16:25 +08:00 via Android
    @zoumouse 呵呵, IT 之家的段子手也能信? 在 Windows 上“运行”(其实是看到)的 iOS 模拟器的原理是 emulator remote ,没有 Mac 玩个啥?
    zoumouse
        20
    zoumouse  
       2016-11-20 17:51:02 +08:00
    Brucepac
        21
    Brucepac  
       2016-11-20 19:05:10 +08:00
    @plqws Xcode 再难用,你这一套弄下来,也比 Xcode 难了吧,想要开发 iOS ,就老老实实用 Xcode
    plqws
        22
    plqws  
    OP
       2016-11-21 08:46:48 +08:00 via iPhone
    @Brucepac Xamarin 的坑我感觉可以一劳永逸地解决, Xcode 的 Swift 升级一下我的努力就全白费了
    nicevar
        23
    nicevar  
       2016-11-23 12:44:34 +08:00
    多年胡搞瞎搞的经验告诉你,这种问题是要看你做什么项目的,比如你只是要写个 helloworld 或者是简单的上层应用项目,不管你是 Xamarin 、 Qt for iOS 还是 React Native 都行,但是一旦你做的项目比较复杂又设计与系统结合的东西,我劝你还是老老实实用 Xcode 来做开发,要不然有踩不完的坑,到头来发现没法解决还得重做项目,曾经遇到过有公司吃螃蟹吃死的,产品到上线时间了遇到无法解决的问题,技术跑到知乎和 V 站上到处寻求解决方案
    InfinitySam
        24
    InfinitySam  
       2017-02-17 12:28:01 +08:00
    @nicevar = =做生意和个人玩乐果然是两码事
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5357 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 09:16 · PVG 17:16 · LAX 01:16 · JFK 04:16
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.