我有一个名为SLCollectionViewModel
的类,如果启动,将使用Core Data获取最新条目。到目前为止,初始视图没有问题。集合视图将正确显示可见条目(并在日志中显示它们)。
但是当我尝试滚动视图或尝试显式调用[self.collectionView reloadData]
时会出现问题。错误日志是:
-[_PFArray retain]: message sent to deallocated instance 0x8de9ab0
我认为我的self.viewModel
对象已在某处解除分配,但我无法确定我的方法有什么问题。这是我的- (void)viewDidLoad
方法:
- (void)viewDidLoad
{
[super viewDidLoad];
self.viewModel = [SLCollectionViewModel new];
[self.collectionView reloadData];
}
这是我的SLCollectionViewModel
课程:
- (instancetype) init {
self = [super init];
if(!self) return nil;
_managedObjectContext = [[SLCoreDataStack defaultStack] managedObjectContext];
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc]init];
NSEntityDescription *entity = [NSEntityDescription
entityForName:@"SLPost"
inManagedObjectContext:_managedObjectContext];
[fetchRequest setEntity:entity];
// The _posts in an NSArray that saves all my NSManageObject
// which will be used to populate the collection view.
_posts = [_managedObjectContext executeFetchRequest:fetchRequest
error:nil];
return self;
}
答案 0 :(得分:0)
我意识到由于没有正确创建属性,这是我自己的错误。在我的SLCollectionViewModel
中,@property
的{{1}}应使用NSArray *posts
而不是retain
。
在:
assign
后:
@property (nonatomic, assign) NSArray *posts;