我在名爲DataModel的單例中初始化了一個類。現在,從我的UIViewController,當我點擊一個按鈕時,我有一個方法試圖訪問該類,以便我可以添加一個對象到它的一個字典。我的get/set方法從我的singleton傳回指向類的指針,但是當我回到UIViewController時,返回的類不響應方法。就像它不在那裏。我認爲這與傳遞類或類似內容的差異有關。我甚至嘗試使用複製方法來丟棄一個副本,但沒有運氣。Obj-C:將指針傳遞給其他類中的初始化類
的UIViewController:
ApplicationSingleton *applicationSingleton = [[ApplicationSingleton alloc] init];
DataModel *dataModel = [applicationSingleton getDataModel];
[dataModel retrieveDataCategory:dataCategory];
辛格爾頓:
ApplicationSingleton *m_instance;
DataModel *m_dataModel;
- (id) init {
NSLog(@"ApplicationSingleton.m initialized.");
self = [super init];
if(self != nil) {
if(m_instance != nil) {
return m_instance;
}
NSLog(@"Initializing the application singleton.");
m_instance = self;
m_dataModel = [[DataModel alloc] init];
}
NSLog(@"ApplicationSingleton init method returning.");
return m_instance;
}
-(DataModel *)getDataModel {
DataModel *dataModel_COPY = [m_dataModel copy];
return dataModel_COPY;
}
對於getDataModel方法,我也試過這樣:
-(DataModel *)getDataModel {
return m_dataModel;
}
在我的DataModel retrieveDataCategory方法,我不能讓任何工作。我甚至只是試圖把NSLog放在那裏,但它永遠不會進入控制檯。
任何想法?
一個簡單的事情來檢查:確保你的對象不是零,因爲一個消息到零是無操作 – cobbal 2010-06-07 23:04:07
哦,我的DataModel * m_dataModel不是零。在我爲該類的init方法中,我有一大堆NSLogs來證明它。 ;)所以,它是活着的,它充滿了東西。就在我將初始化類從單例傳遞迴UIViewController時,UIViewController無法調用DataModel上的任何方法。 – FnGreg7 2010-06-07 23:06:38
我假設'm_instance'和'm_dataModel'沒有在'@ interface'中聲明爲ivars,並且這些聲明在實現文件中? – 2010-06-08 00:31:05