[問題] 關於iphone程式的問題
小弟最近遇到一個iphone程式的問題
我簡單描述一下情況
//=====================================
在a.h 和a.m 的檔案裡
有這個View的定義
@interface a : UIView {
NSMutableDictionary *dic;
}
-(id)init; // 設定dic的object,
// [dic setObject:xxx ...];
// object是NSNumber
@property (retain, nonatomic) NSMutableDictionary *dic;
@end
...(@implement忽略)
//-------------------------------------
在b.h 和b.m 的檔案裡
有這個View的定義
@interface b : UIView {
a *aView;
}
-(id)init; // 初始化method
// method裡會寫aView = [[a alloc] init];
-(void)callAView; // 這裡會呼叫aView裡的dic
// NSNumber *digit = [aView.dic forObjectKey:xxx];
@property (....略)
@end
...(@implement忽略)
//=====================================
我的情況是先call
[b init]; //b裡面又會再call a的init設定dic的object
then
[b callAView];
雖然在b.m,[b init]已經設定dic裡有什麼物件
但當我在a.m裡,用[a callAView]時
卻找不到dic裡面的物件!!!
怎麼會這樣呢?
請問要如何解決呢?
感謝大家的協助了!
--
※ 發信站: 批踢踢實業坊(ptt.cc)
※ 編輯: wudidog 來自: 123.193.76.190 (07/01 23:14)
※ 編輯: wudidog 來自: 123.193.76.190 (07/01 23:15)
→
07/02 00:16, , 1F
07/02 00:16, 1F
→
07/02 00:16, , 2F
07/02 00:16, 2F
嗯…
因為檔案實在太大了
程式碼很多很多行
不知道該從何貼起
另外我也發現
我簡化掉一個關鍵
我有用[NSTimer scheduledtimerwithtimeinterval: 1
target:self
selector:@selector(callAView)
userInfo:nil
repeats:YES];
我測的結果是,callAView如果不是NSTimer呼叫的selector
(註解NSTimer那行,只用[b callAView])
可以正常取用dic內的物件
(這代表我的設定基本上沒問題沒錯,對吧!?)
但如果callAView是NSTimer呼叫的對象
(就是執行NSTimer)
那在裡面呼叫dic的物件
就會出現問題…
這真的很怪…
我之後還在@interface a 裡設定一個int 的變數
看能不能在callAView裡讀到
結果,可以正確讀到值
我真的搞不懂到底是怎麼回事…
※ 編輯: wudidog 來自: 123.193.76.190 (07/02 22:52)
討論串 (同標題文章)
以下文章回應了本文:
完整討論串 (本文為第 1 之 5 篇):
MacDev 近期熱門文章
PTT數位生活區 即時熱門文章