代码之家  ›  专栏  ›  技术社区  ›  Dan Ray

使用数据管理单例

  •  0
  • Dan Ray  · 技术社区  · 15 年前

    这是我的单例代码(相当于样板文件):

    @interface DataManager : NSObject {
        NSMutableArray *eventList;
    }
    
    @property (nonatomic, retain) NSMutableArray *eventList;
    
    +(DataManager*)sharedDataManager;
    
    @end
    

    然后是.m:

    #import "DataManager.h"
    
    static DataManager *singletonDataManager = nil;
    
    @implementation DataManager
    
    @synthesize eventList;
    
    +(DataManager*)sharedDataManager {
        @synchronized(self) {
            if (!singletonDataManager) {
                singletonDataManager = [[DataManager alloc] init];
            }
        }
        NSLog(@"Pulling a copy of shared manager.");
        return singletonDataManager;
    }
    

    因此,在我的AppDelegate中,我在启动第一个视图之前加载了一些内容:

    NSMutableArray *eventList = [DataManager sharedDataManager].eventList;
    
    ....
    
    NSLog(@"Adding event %@ to eventList", event.title);
    [eventList addObject:event];
    NSLog(@"eventList now has %d members", [eventList count]);
    [event release];
    

    如你所见,我已经在代码中添加了nslog对自己的爱注释。日志的输出如下:

    2010-05-10 09:08:53.355 MyApp[2037:207] Adding event Woofstock Music Festival to eventList
    2010-05-10 09:08:53.355 MyApp[2037:207] eventList now has 0 members
    2010-05-10 09:08:53.411 MyApp[2037:207] Adding event Test Event for Staging to eventList
    2010-05-10 09:08:53.411 MyApp[2037:207] eventList now has 0 members
    2010-05-10 09:08:53.467 MyApp[2037:207] Adding event Montgomery Event to eventList
    2010-05-10 09:08:53.467 MyApp[2037:207] eventList now has 0 members
    2010-05-10 09:08:53.524 MyApp[2037:207] Adding event Alamance County Event For June to eventList
    2010-05-10 09:08:53.524 MyApp[2037:207] eventList now has 0 members
    

    …给出了什么?我没有错误进入我的事件列表NSmutableArray。但是我加了一句:无声地失败了?

    1 回复  |  直到 15 年前
        1
  •  0
  •   deanWombourne    15 年前

    我猜你还没有在DataManager的in i t方法中创建事件列表?

    - (id) init {
        if (self = [super init]) {
            eventList = [NSMutableArray alloc] init];
        }
    return self;
    }