作者zonble (zonble)
看板MacDev
标题Re: [问题] Mac App 开发的书好像不好找?
时间Wed Nov 14 01:08:16 2012
※ 引述《osnq (又可以挂bbs了)》之铭言:
: 坊间有的都是iOS develop 的书籍,
: 似乎没有Mac App develop 的书?
: 我想可能是跟在iOS 上开发比较能有掏金梦吧!
: 毕竟Mac App Store 上线才一年左右...
: 不过,我还是很想试试Mac App 的开发。
: 不知道我该从哪边开始呢?
: p.s. 我本身有在写iOS 的App, 是否二者的开发流程差不多呢?
: (难道真的只要在xCode 中,开新的Mac App project 就可以了吗!)
: 希望有经验的大大能给点建议,谢谢!
Mac OS X 与 iOS 的 framework 设计,都是基本物件与 UI 层
的东西拆开来,iOS 是 Foundation + UIKit 组成 Cocoa Touch,
Mac 上面则是 Foundation + AppKit 组成 Cocoa。基本上你已经
会了 Foundation 的东西,就是来看 AppKit 的部份而已。
比较 Mac 与 iOS,iOS 上面其实是一整份重新整理过的 API,
Mac 上面其实有很多历史留下来的残渣,比方说第一次遇到一定
会踩到雷的 field editor 这种设计…。
可以先看一下苹果的简单入门文件
http://developer.apple.com/library/mac/#referencelibrary/GettingStarted/RoadMapOSX/chapters/01_Introduction.html
我自己觉得 Mac 与 iOS 开发,大概掌握几件事情:
1. 先把 UIViewController 忘了,虽然 Mac 上面也有 NSViewController
但是 Mac 上面实作 UI,多半是以一个 Window 为起点。但是这
也不代表说要去用 NSWindowController…NSWindowController
又是 NSDocument 架构的一部分。
要开始习惯 Controller 不需要继承自某个系统里头的 Controller
class,直接继承自 NSObject,而同一个 controller 也可以管理
好几个 window。
2. 习惯很多东西 Mac 与 iOS 是相反的。iOS 的座标原点是左上角
但是 Mac 是左下角。建立 CGRect 用 CGRectMake,NSRect 则是要
用 NSMakeRect,CGPointMake 在 Mac 上也会变成 NSMakePoint,
CGRectContainsPoint 也会反过来变成 NSPointInRect。
3. 很多 UIApplication 处理的工作,在 Mac 上面会变成是由
NSWorkSpace 处理。
4. 要搞懂 NSCell 是什麽。
5. 要搞懂把 target 设到 nil 上是什麽意思,还有怎麽去 validate
menu item 与 toolbar item。
6. 有些东西在 iOS 上面很少用到,例如 undo 以及 drag and drop
在手机上面根本没有什麽人去实作 shake to undo 这种事情,但是
写 Mac app 一定得搞懂 undo manager 怎麽用,还有像是写 redo
其实就是要写 undo 的 undo…触控介面不容易做 drag and drop,
但是滑鼠介面中这个却是非懂不可。
7. Distributed Objects 还有 XPC,在 iOS 上面不怎麽容许做
Inter Process Communication,但是 Mac 上面会用到。
8. WebKit,在 iOS 上面的 UIWebView 很多东西是被封印的,
但是 Mac 上面有一大堆东西可以用,很多复杂的 UI 其实可以直接
丢进 WebView 里头做。
--
zonble.net
cocoa.zonble.net
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 36.230.150.232
1F:→ nobody1:推 11/14 01:11
2F:推 osnq:看来差距颇大的,谢谢您的建议! 11/14 07:21
3F:推 dryman:推iOS整理过的API真的比较好上手 11/14 08:59
4F:推 popcorny:推!! 11/14 09:06
5F:推 hSATAC:推 最近刚好也在看 Mac 开发 感谢! 11/14 09:19
6F:推 s8911124: 推 11/14 09:40
7F:→ uranusjr:其实差距也没「那麽大」, 至少比跳去其他 frameworks 要 11/14 13:29
8F:→ uranusjr:小得多, 基本的东西也还是互通(MVC 啊 delegate 等等) 11/14 13:30
9F:→ uranusjr:不过 iOS 不是也有 first responder 吗? 11/14 13:32
10F:推 sy305allen:会让人流泪的好文,果然是Zonble,感谢。 11/16 01:51
11F:→ wemee:跪拜 11/16 09:13
12F:推 smartree:虽然想学Xcode很久了,但是还是没有实际行动,谢你的文章 11/23 23:10
13F:推 u0r5656:Zonble大大超强~受益良多 02/05 11:17