2014-04-27 38 views
0

我有一個名爲SLCollectionViewModel的類,如果啓動,它將獲取Core Data的最新條目。到目前爲止,初始視圖沒有問題。集合視圖將正確顯示可見條目(並在日誌中顯示它們)。在UICollectionViewController中釋放實例

但是,當我嘗試滾動視圖或嘗試顯式調用[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

如何爲'self.viewModel'的'@ property'聲明? – Rich

+0

它是'@property(nonatomic,strong)SLCollectionViewModel * viewModel;' – sayzlim

+0

當程序暫停並激活調試器時,輸出內容地址說明被解除分配了嗎?即從你原來的問題'po 0x8de9ab0'。 也出於興趣是崩潰一致,每次都有相同的錯誤信息? – Rich

回答

0

我意識到這是我自己的不正常創建屬性的錯誤。在我的SLCollectionViewModel,的NSArray *posts應該使用retain而不是assign

前: @property (nonatomic, assign) NSArray *posts;

後:

@property (nonatomic, retain) NSArray *posts;