从iOS跳到OSX

jar*_*ryd 31 iphone macos

我想开始学习为OSX编程,但只为iOS编程.

除了内存,处理能力等硬件相关问题之外,编程级别的重大差异是什么?

就实际的api和编程而言,就像鼠标和键盘而不是触摸屏所使用的项目一样.

我想从有这方面经验的人那里得到一些建议,可能还有很好的书籍链接或教程链接.

谢谢

sud*_*-rf 22

让我这样说吧:不要只是尝试将所有东西都移植到Mac而不考虑设计原则.许多开发人员都在寻求加入Mac开发人员的行列而不花时间进入他们的应用程序.简单地将应用程序从iOS移动到Mac并不会带来良好的界面.

面对它,iOS专为触摸屏而设计,而Mac则不是.因此,简单地转移您的界面可能会起作用,但它很糟糕并且被许多用户所厌恶.我要做的只是下载一些着名的Mac应用程序(演示工作正常),并研究界面与iOS相比如何布局.有类似的概念,但有更多的差异而不是相似之处.

最根本的区别是iPhone上的界面只能有一个窗口,而Mac可以有无限的窗口(理论上).将所有视图填充到一个窗口中只是不会在Mac上剪切它.用户已经开始期待多个窗口,老实说,这是一个更好的方法.

所以我的建议是从头开始学习Cocoa,然后考虑将应用程序转移到... 而不是简单地移植它,而是通过创建一个全新的界面.您的模型仍然可以使用,因为两个平台都使用Objective-C.

平台如此相似,但又如此不同.:)

在此输入图像描述


Dar*_*ren 11

在编写现代OS X应用程序时,您通常会使用数据绑定将您的模型连接到您的视图,通过NSArrayController等通用控制器.

围绕Cocoa数据绑定对于新手而言是一个挑战性的任务,起初非常令人沮丧,然后非常令人兴奋.如果您的主数据绑定可能从根本上改变您设计软件的方式.

问题是你的iOS应用程序都没有考虑到Data Binding的设计,而且这是一个必须跨越的桥梁,以便成为一个快乐有效的OS X开发人员(同时学习各种各样的SDK差异)


Gra*_*yer 9

两年前我走了另一条道路,出乎意料地艰难地走了过去.

OS X是一个更老的,并且是在Objective-C 2.0之前创建的,因此旧版AppKit/CoreFoundation类中没有很多属性.我的大多数旧iOS代码如下所示:

[[self navigationController] popViewControllerAnimated: YES];
Run Code Online (Sandbox Code Playgroud)

用户界面:大部分的resoponder/view/control层次结构都是类似的,但现在称为NS(来自拉丁语,用于NextStep),而不是UI(用于小屏幕的拉丁语).

控制:

稍微不同,您将操作连接到控件,控件决定何时发送操作消息,即.如果滚动条设置为连续发送消息.这与UIkit的工作方式略有不同,您可以在其中连接到事件类型:值已更改,内部触摸等.

您在OS X中获得了多个窗口,为您提供了新的机会和挑战.您必须更加关注响应者层次结构.

小东西总会让你感觉到,就像在UIBezierCurve中一样,这些方法的命名方式与NSBezierCurve的命名方式略有不同,addLineToPoint:而不是lineToPoint:

注意你的编译器警告并获取一本新书,你会没事的.


nie*_*bot 8

多年来,这两个平台变得更加相似,许多OS X API被迁移到iOS.我认为主要的区别是UI部分.在OS X上,您使用AppKit来显示UI而不是UIKit.(尽管您可以使用Interface Builder).

一些API已经反过来了:CoreLocation曾经是一个仅限iOS的框架,现在可以在OS X上使用.

其他变化:

  • 事件模型是不同的(NSEvent vs UIEvent).
  • CoreImage可用于OS OS X.

根据您的经验水平,我将从Xcode中Apple提供的一些AppKit示例开始.HTH