静态NSManagedObject将保留在内存中

时间:2016-02-25 10:38:22

标签: ios sqlite core-data nsmanagedobject

我正在使用CoreData创建静态NSManagedObject并从NSManagedObjectContext中获取。

static YFYMRDepartment *rootOne;
if (!rootOne) {
    rootOne = [YFYMRDepartment MR_findFirstByAttribute:@"parent_id" withValue:@(0) inContext:[NSManagedObjectContext MR_defaultContext]];
}

return rootOne;

我正在使用Magical Record,MR_find代码实际上是从上下文中执行一些获取作业。 但是,即使我删除了sql文件后, 静态对象仍在那里。

我删除了这样的文件:

NSError *error = nil;
NSURL *fileURL = pathForStore;
NSString *schemaURLString = [[fileURL absoluteString] stringByReplacingOccurrencesOfString:@".sqlite" withString:@".sqlite-shm"];
NSString *walURLString = [[fileURL absoluteString] stringByReplacingOccurrencesOfString:@".sqlite" withString:@".sqlite-wal"];
for (NSURL *romoveString in @[fileURL, [NSURL URLWithString:schemaURLString], [NSURL URLWithString:walURLString]]) {
    [[NSFileManager defaultManager] removeItemAtURL:romoveString error:&error];
    if(error) {
        // Hanldle error
    }
}

我的问题是,为什么对象仍然存在,即使我删除了商店文件。

1 个答案:

答案 0 :(得分:1)

删除商店不会对该对象执行任何操作。您需要重置上下文并使引用无效。