从 iPhone 到 Mac 编程
Posted
技术标签:
【中文标题】从 iPhone 到 Mac 编程【英文标题】:From iPhone to Mac programming 【发布时间】:2010-01-14 05:49:52 【问题描述】:我查看了该网站以确保这不是重复的。如果我遗漏了什么,请道歉。
我已经从事 iPhone 开发大约一年了,我对 Objective-C、Xcode 和 Cocoa(至少在 iPhone 上使用的)感到满意,但为 OS X 编程似乎涉及更多。
对于像我这样的人来说,有哪些好的免费资源?我看到的大部分内容都是关于学习 Objective-C 和 Cocoa,我真的很想了解我不熟悉的 IB 部分以及其他在 OS X 上很重要但在 iPhone 上没有的东西。
【问题讨论】:
我发现压倒性的是 Mac 上的大量框架和可能的 API。 iPhone 感觉就像是 Mac 上可用的干净精简和更现代的版本。 【参考方案1】:虽然 iPhone 开发环境严格来说并不是 Mac 的一个子集,但由于有一些改进的和 iPhone 专用的部分,它几乎是这样(而且主要是好的部分)。因此,Mac 可能是最容易从 iPhone 迁移到的平台。
在 Mac 上,您会特别想了解 Cocoa Bindings,它是许多现代 UI 工作的基础,但还没有(还)在手机上。
针对您的具体问题,一些备受推崇的免费 Mac 编码资源包括:
由 Apple 运行的规范 cocoa-dev mailing list(不幸的是,它只有 Apple 实现的可悲的蹩脚 Web 访问,并且偶尔通过不可靠的第三方努力进行增强,通过实际从您的一个电子邮件帐户) CocoaDev wiki Rogue Amoeba 的 Mike Ash 在他的blog 上有一个非常有用的周五问答系列 Aaron Hillegass 的高级 Mac 编程书籍,Advanced Mac OS X Programming 虽然 Apple 的文档现在非常好,但在糟糕的“即将到来的描述”时代,我们中的很多人都从知名软件公司发布的开源代码中了解到 Mac OS X 是如何运行的,例如 Omni's frameworks,你是免费的将原样嵌入到您的应用中,或从中挑选代码(嗯,我通常不在这里发帖,所以我被禁止超链接上述参考资料...我可以将它们作为文本输入吗?呃,不!好吧,我猜总是有谷歌。)
【讨论】:
【参考方案2】:值得庆幸的是,桌面上的 Cocoa 和 Cocoa Touch 非常相似。我建议只从 Apple 的网站下载一些初学者示例代码。由于您已经了解 Objective-C/Cocoa,您应该能够很容易地跟上。如果某些部分令人困惑,您可以浏览 Apple 的指南。
相同之处:
设计模式(目标/动作、委托、数据源、第一响应者等) Objective-C 界面生成器不同之处:
一个控件只能有一个目标和一个动作。在 iPhone 上,您可以为内部修饰、外部修饰等设置一个目标/动作。在 Mac 上,只有一个。 NSWindowController 用于加载 xib(但在概念上类似于 UIViewController)编辑:总体而言,iPhone 的主要不同之处在于有更多“预构建”的 UI 类(UINavigationController、UITabBarController 等),您可以在您的应用中使用它以使其看起来漂亮漂亮(最重要的是,与 Apple 保持一致应用程序)。
【讨论】:
你可以也应该使用NSViewController
,它更像UIViewController
而不是它的Window对应物。【参考方案3】:
我从 Mac OS 开发开始,然后进入 iPhone 开发。您可能已经了解 API 如何工作的核心概念。我看到从 iPhone 过渡到 Mac 的开发人员最大的问题是习惯了 Mac 用户期望他们的应用程序工作的所有微妙方式。诸如处理 Page Up 和 Page Down 键以滚动视图之类的事情(Tweetie 不支持这一点感到羞耻)。或处理多个窗口。或多种显示尺寸(并确保不要将窗口放置在屏幕外)。
对于技术编程问题,Apple 自己的文档是最好的起点。对于为 Mac OS 设计和正确做事的细微差别,据我所知,没有一本书或网站可以提供所有答案。这主要来自于使用获得 Apple 设计奖的应用并模仿他们所做的事情。
【讨论】:
以上是关于从 iPhone 到 Mac 编程的主要内容,如果未能解决你的问题,请参考以下文章
如何通过套接字或框架将音频从 iPhone 的麦克风流式传输到 Mac/PC?
Iphone 编程 - 将现有的 sql 表导入到 sqlite 或核心数据
如何使用Xilisoft iPad Magic Platinum for Mac从/向 iPad/iPod/iPhone 传输文件?