Ios 私有数组init返回nil

Ios 私有数组init返回nil,ios,objective-c,arrays,Ios,Objective C,Arrays,我正在使用BNR iOS objective C书中开发的代码初始化对象中的私有NSMutableArray。以下是初始化代码: // // NRCViewStore.m // Lifetimer // // Created by Nelson Capes on 9/13/15. // Copyright (c) 2015 Nelson Capes. All rights reserved. // #import "NRCViewStore.h" #import "NRCVie

我正在使用BNR iOS objective C书中开发的代码初始化对象中的私有NSMutableArray。以下是初始化代码:

    //
//  NRCViewStore.m
//  Lifetimer
//
//  Created by Nelson Capes on 9/13/15.
//  Copyright (c) 2015 Nelson Capes. All rights reserved.
//

#import "NRCViewStore.h"
#import "NRCView.h"
@interface NRCViewStore ()
@property (nonatomic) NSMutableArray *privateItems;
@end
@implementation NRCViewStore
+(instancetype)sharedStore
{
    static NRCViewStore *sharedStore;

    if(!sharedStore){
        sharedStore = [[self alloc]initPrivate];
    }
    return sharedStore;
}
-(instancetype)init
{
    self = [super init];

    return self;
}
-(instancetype)initPrivate
{
    self = [super init];
    NSArray *viewList = @[@"seconds", @"minutes", @"hours",
                         @"months", @"days", @"years"];

    if(self){
        _privateItems = [NSMutableArray arrayWithArray:viewList];
    }
    return self;
}
-(NSArray *)allitems
{
    return [self.privateItems copy];
}


@end
但是,当我调用该对象时,返回的数组是nil。对对象的调用如下所示:

    #import "NRCViewStoreViewController.h"
#import "NRCViewStore.h"
#import "NRCView.h"

@implementation NRCViewStoreViewController
-(instancetype)init{
    self = [super initWithStyle:UITableViewStylePlain];
    return self;
}
-(instancetype)initWithStyle:(UITableViewStyle)style
{
    return [self init];
}
-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
    NSInteger count =[[[NRCViewStore sharedStore]allItems]count];
    return count;

}
-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    UITableViewCell *cell = [[UITableViewCell alloc]initWithStyle:UITableViewStylePlain reuseIdentifier:@"NRCViewCell"];

    NSArray *array = [[NRCViewStore sharedStore]allItems];
    NRCView *view = array[indexPath.row];
    cell.textLabel.text = view.viewName;
    return cell;
}

@end

根据我对代码的理解,[NRCViewStore sharedStore]应该同时执行alloc和init,并初始化私有NSMutableArray _privateItems。在返回self之前,我在initPrivate中设置了一个断点,_privateItems数组被初始化为我想要的。然后对-NSArray*allItems的调用应该返回一个初始化的NSMutableArray的副本,调用者认为它是一个NSArray。但是,调用allitems后调用方中的断点显示返回的数组为nil。我无法理解这一点,因为我的另一个项目中没有私有数组初始化的类似代码也可以工作。

第二个断点在哪里?在tableView中:cellForRowAtIndexPath:?哪一行?我刚刚将_privateItems移出类扩展并移到类标题中,现在数组已正确初始化@NelsonCapes-那么,解决了吗?