作者wudidog (呜啦啦)
看板MacDev
标题[问题] 关於iphone程式的问题
时间Thu Jul 1 23:11:28 2010
小弟最近遇到一个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)
1F:→ zonble:我想问题应该都出现在你(略)的地方里头 07/02 00:16
2F:→ zonble:你这样写,别人是没办法帮你看问题的 07/02 00:16
嗯…
因为档案实在太大了
程式码很多很多行
不知道该从何贴起
另外我也发现
我简化掉一个关键
我有用[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)