我的单例访问器方法通常是以下的一些变体:
static MyClass *gInstance = NULL;
+ (MyClass *)instance
{
@synchronized(self)
{
if (gInstance == NULL)
gInstance = [[self alloc] init];
}
return(gInstance);
}
Run Code Online (Sandbox Code Playgroud)
我可以做些什么来改善这个?
我有一个Core Data对象Account,表示为以下的子类NSManagedObject:
@interface Account : NSManagedObject
Run Code Online (Sandbox Code Playgroud)
我的整个应用程序一直在发展很好,但是,当我添加MessageUI.framework所以我可以得到一个撰写电子邮件视图控制器,所有地狱都松了一口气.该应用程序链接和编译很好,运行得很好.直到,也就是说,我开始与之前工作的Account对象进行交互.然后,我开始得到这些:
*** Terminating app due to uncaught exception 'NSInternalInconsistencyException',
reason: '"Account" is not a subclass of NSManagedObject.'
*** First throw call stack:
(0x202b012 ... 0x2385)
libc++abi.dylib: terminate called throwing an exception
Run Code Online (Sandbox Code Playgroud)
其中一个特殊原因是:
// we need to insert a new account
Account *newAccount = [NSEntityDescription
insertNewObjectForEntityForName:[Account entityName]
inManagedObjectContext:self.managedObjectContext];
Run Code Online (Sandbox Code Playgroud)
现在,我猜测MessageUI.framework导致冲突有一些课,但我有几个问题:
MFMailComposeViewController,那么理论帐户应该不是MFAccount吗?#import <MessageUI/MessageUI.h>或稍微紧一些#import <MessageUI/MFMailComposeViewController.h>,后者我检查过并没有看到任何定义Account,所以我不确定为什么甚至会加载可能的冲突.