开始使用os x的cocoa?

时间:2010-09-03 15:48:08

标签: cocoa macos ios

我熟悉iOS编程,但是当我为OS X启动Cocoa项目时,我不知道在哪里放置逻辑。是否有任何好的在线资源可以从iOS转换到OS X?

编辑:

感谢您的帮助。我的主要问题是我的代码在默认模板中的位置。

2 个答案:

答案 0 :(得分:2)

  

我的主要问题是我的代码在默认模板中的位置。

假设有一个单窗口应用程序,我创建一个单独的自定义控制器来拥有该窗口,并且我让应用程序对象的委托拥有该控制器。

所以:

应用程序对象的委托

  • 拥有自定义控制器。
  • applicationWillFinishLaunching:中创建它(注意:不是Did;我改变了这一点。)
  • nil中释放它(以及applicationWillTerminate:出实例变量。
  • 不拥有主窗口(我删除了该ivar及其所有引用)。
  • 使用applicationShouldTerminateAfterLastWindowClosed:回复YES,以便用户可以通过专门退出或关闭主窗口退出应用程序。
  • 也可以回复application:openFile:application:openFiles:,通常是将文件传递给控制器​​以进行导入或其他操作。

MainMenu笔尖

  • 拥有应用程序的委托。
  • 不包含主窗口(我删除了空白窗口)。

主窗口控制器

  • 拥有主窗口。
  • 拥有窗口中显示的模型。
  • init
  • 中创建初始/空模型
  • init
  • 中将主窗口笔尖作为所有者加载
  • 关闭并释放窗口(第一个)并在dealloc中释放模型(第二个)和从属控制器(第三个)。

主窗口笔尖

  • 与控制器类似;例如,控制器的“SnippetListController”和笔尖的“SnippetList”。
  • 包含主窗口。
  • 主窗口已启用“启动时可见”(确实在nib加载时),并且“关闭后释放”已关闭。

所有这一切的优点在于每个对象的生命周期,但应用程序的委托是清晰明确的,责任范围也是如此。我的申请代表不过是这个;它唯一做的就是没有专门的app-delegate作业拥有主窗口控制器。同样,主窗口控制器除了拥有主窗口以及我必须在该窗口中显示的任何模型外什么都不做。在退出时,除应用程序代理之外的所有内容都会被解除。

对于基于文档的应用程序,我非常接近模板。我删除了我不需要自定义的任何模板方法,并且我可以将一个或两个I / O方法切换到其他版本之一(例如,从readFromData:ofType:error:readFromURL:ofType:error:),并且如果我只写一个观察者,可能会删除写入方法;就是这个。

答案 1 :(得分:1)

潜入。

严重的是双脚跳进来。找到你想要制作的东西,然后制作它。

根据你的说法,你已经在Objective-C和Cocoa方面获得了相当多的经验,大多数事情都是直接的。