我的NSManagedObjectContext
应用程序早些时候,我曾用这种方式定义class MyViewController: NSViewController {
lazy var moc: NSManagedObjectContext? = {
let app = NSApplication.sharedApplication().delegate as! AppDelegate
if let moc = app.managedObjectContext {
return moc
} else {
return nil
}
}()
// ....
}
:
Eartquakes
但后来我下载了名为NSManagedObjectContext
的Apple示例应用程序,其中import Cocoa
class CoreDataStackManager {
class var sharedManager: CoreDataStackManager {
struct Singleton {
static let coreDataStackManager = CoreDataStackManager()
}
return Singleton.coreDataStackManager
}
// persistenStoreCoordinator etc...
就是这样:
class ApplesViewController: NSViewController {
private lazy var managedObjectContext: NSManagedObjectContext = {
let moc = NSManagedObjectContext(concurrencyType: .MainQueueConcurrencyType)
moc.persistentStoreCoordinator = CoreDataStackManager.sharedManager.persistentStoreCoordinator
return moc
}()
}
在ViewController中:
SUBROUTINE test
USE mp, only: mp_bcast
integer :: B = 0
logical :: A
...
CALL mp_bcast (A, B)
END SUBROUTINE test
所以我只是想知道哪种方式是正确的方式 - 我认为这是Apple的方式:) - 这就是为什么默认情况下在AppDelegate中定义核心数据堆栈的原因?
答案 0 :(得分:0)
有很多方法可以做到这一点,但最终还是可维护性。
我找到的最佳方式,以及Apple对其他项目的传统方法是:
请勿使用Singleton。虽然在项目开始时感觉很容易,但往往会让你把它画成一个角落。