我熟悉iOS编程,但是当我启动OS X的Cocoa项目时,我不知道在哪里放置逻辑。是否有很好的在线资源可用于从iOS过渡到OS X?
编辑:
感谢你目前的帮助。我的主要问题是我的代码在默认模板中的位置。
最佳答案
我的主要问题是我的代码在默认模板中的位置。
假设有一个单窗口应用程序,我将创建一个单独的自定义控制器来拥有该窗口,并且我拥有该对象的应用程序对象的委托。
所以:
应用程序对象的委托
拥有定制控制器。
在applicationWillFinishLaunching:
中创建它(注意:不是Did
;我对此进行了更改)。
在nil
中释放它(并applicationWillTerminate:
释放实例变量)。
不拥有主窗口(我删除了该ivar及其所有引用)。
用applicationShouldTerminateAfterLastWindowClosed:
响应YES
,以便用户可以通过专门退出或关闭主窗口来退出应用程序。
也可能响应application:openFile:
或application:openFiles:
,通常是将文件传递到控制器以进行导入或其他操作。
MainMenu笔尖
拥有应用程序的委托。
不包含主窗口(我删除了空白窗口)。
主窗口控制器
拥有主窗口。
拥有窗口中显示的模型。
在init
中创建初始/空模型。
在init
中以自身所有者的身份加载主窗口笔尖。
关闭并释放窗口(第一个),然后释放dealloc
中的模型(第二个)和从属控制器(第三个)。
主窗口笔尖
命名与控制器类似;例如,用于控制器的“ SnippetListController”和用于笔尖的“ SnippetList”。
包含主窗口。
主窗口的“启动时可见”(实际上是笔尖加载)已打开,“关闭时释放”已关闭。
所有这些的优点是,除了应用程序的委托外,每个对象的生命周期都是清楚而明确的,责任领域也是如此。我的应用程序的委托仅此而已;它唯一没有执行应用程序委托工作的唯一事情就是拥有主窗口控制器。同样,主窗口控制器除了拥有主窗口以及我必须在该窗口中显示的任何模型外,什么也不做。在退出时,除应用程序的委托外的所有东西都被解除锁定。
对于基于文档的应用程序,我会紧贴模板。我删除了不需要自定义的所有模板方法,并且可能将一个或两个I / O方法切换到其他版本之一(例如,从readFromData:ofType:error:
到readFromURL:ofType:error:
),并且可能删除了写操作如果我仅编写查看器,则该方法;就是这样。