Cocoa Application Bootstrap问题

时间:2010-07-21 17:18:59

标签: cocoa macos cocoa-design-patterns

我是一名经验丰富的开发人员,是Mac开发的新手,所以我

还有很多差距,我很难找到好的可读性。我的一些问题列在下面。这些非常简单/一般。必须有一个简短,简洁的文档,详细说明基本的应用程序引导过程,以及所有涉及的类。谢谢!

  • 由XCode生成的“委托”包含NSPersistentStoreCoordinator,NSManagedObjectModel和NSManagedObjectContext的实例 - 请详细说明?
  • 委托声明为“@interface tests_AppDelegate:NSObject {”。为什么协议丢失了?我在那里看到网上的例子。
  • 我看到应用程序委托在Interface Builder中实例化。它在哪里传递到NSApplication实例?

2 个答案:

答案 0 :(得分:1)

  1. 只有在将模板用于基于CoreData的应用程序时才会发生这种情况。阅读Core Data basics

  2. 该协议仅在OS X 10.6中正式化。在此之前,它是非正式地完成的。只要委托实现了引用中提到的选择器,就会调用它。代表并不一定要明确采用协议。当然最好这样做。见NSApplicationDelegate reference。每个条目都有评论

      

    适用于Mac OS X v10.0及更高版本。   可作为Mac OS X v10.6之前的非正式协议的一部分。

  3. 在Interface Builder中,您会看到委托已分配给文件所有者的“委托”出口:右键单击文件所有者,您可以看到。 nib文件包含在IB中创建的冻干对象。当应用在初始化过程中读取MainMenu.nib时,它会分配NSApp 作为文件的所有者。因此,在nib文件中实例化和冻结的app委托被分配给NSApp的{​​{1}}。阅读Nib Files

答案 1 :(得分:1)

  

由XCode生成的“委托”包含NSPersistentStoreCoordinator,NSManagedObjectModel和NSManagedObjectContext的实例 - 请详细说明?

那是Core Data的东西。

  

委托被声明为“@interface tests_AppDelegate:NSObject {”。为什么协议丢失了?我在那里看到网上的例子。

可能是疏忽。 AppKit并不总是有正式的NSApplicationDelegate协议。 Apple可能根本不会更新模板。你可以file a bug

  

我看到应用程序委托在Interface Builder中实例化。它在哪里传递到NSApplication实例?

右键单击应用程序对象。您会发现其delegate出口已连接到委托对象。