“无法识别的选择器”-将 AppDelegate 的 NSManagedObjectContext 导入其他类 (OSX) 时出错

Posted

技术标签:

【中文标题】“无法识别的选择器”-将 AppDelegate 的 NSManagedObjectContext 导入其他类 (OSX) 时出错【英文标题】:"Unrecognized Selector"-Error when importing NSManagedObjectContext of AppDelegate into other classes (OSX) 【发布时间】:2013-01-23 18:38:46 【问题描述】:

在我的应用程序中,我想在另一个类 (myClass) 中使用由 AppDelegate 创建的 ManagedObjectContext。为此,我首先在 MyClass 中创建了一个实例变量来存储 objectContext:

NSManagedObjectContext *managedObjectContext;

我还用@property 定义了getter 和setter。 为了设置实例变量,我在初始化后为其分配了 AppDelegate 的 managedObject 上下文:

-(void)applicationDidFinishLaunching:(NSNotification *)aNotification

   myClass *myClassInstance = [[myClass alloc]init];
   [myClassInstance setManagedObjectContext:[self managedObjectContext]];

现在,当我运行应用程序时,我得到以下信息:

-[NSManagedObjectContext copyWithZone:]: unrecognized selector sent to instance 0x100634c90

说实话,我真的不知道该怎么做。有人可以帮我吗?

【问题讨论】:

【参考方案1】:

您似乎已经使用“copy”属性为托管对象上下文声明了@property。您应该将其声明为

@property(strong, nonatomic) NSManagedObjectContext *managedObjectContext;

无法复制托管对象上下文,但它也没有任何意义。你想在你的类中使用相同的上下文,而不是一个(独立的)副本。

【讨论】:

那是个错误。非常感谢!

以上是关于“无法识别的选择器”-将 AppDelegate 的 NSManagedObjectContext 导入其他类 (OSX) 时出错的主要内容,如果未能解决你的问题,请参考以下文章

无法识别的选择器发送到数组中的实例[重复]

AppDelegate setFullscreen:无法识别的选择器发送到实例

尝试获取 AppDelegate 时出现“无法识别的选择器发送到实例”错误

无法识别的选择器发送到AppDelegate中的实例

[AppDelegate managedObjectContext]:发送到实例的无法识别的选择器

由于未捕获的异常'NSInvalidArgumentException'而终止应用程序,原因:'-[_.AppDelegate add:]:无法识别的选择器