每當我的方法將對象設置爲onTouchEventReceiver時,當另一個線程調用另一個方法時,它會丟失。無法在ObjC中設置對象?
//In header
id onTouchEventReceiver;
SEL onTouchSelector;
- (void) setOnTouchSelector:(SEL)sel withObject:(id)obj
{
NSLog(@"setting obj to %@",obj);
onTouchSelector = sel;
[self setOnTouchEventReceiver:obj];
NSLog(@"====----- %@",onTouchEventReceiver); //That works
}
//Another thread calls this
- (void) touchEventReceived
{
NSLog(@"firing a selector at %@ by %@",onTouchEventReceiver,self);
//Why on earth does that happen?????
if (onTouchEventReceiver != nil) //onTouchEventReceiver is (null)
{
[onTouchEventReceiver performSelector:onTouchSelector];
}
}
的代碼產生如下:
2010-07-18 23:40:54.776 app[737:903] setting obj to <appCtl: 0x10fa00>
2010-07-18 23:40:54.787 app[737:903] ====----- <appCtl: 0x10fa00>
......畫面被感動後...
Got touch event at coordinates 154 x 243 , mask : 2
2010-07-18 23:41:39.342 app[737:3b03] AALayer hit test passed : <AALayer: 0x110af0>
2010-07-18 23:41:39.348 app[737:3b03] firing a selector at (null) by <AALayer: 0x110af0>
爲什麼會發生呢?代碼似乎是正確的。
沒有看到所有的代碼,但是你確定這一切發生在同一個實例?你可以NSLog'self'以及setOnTouchSelector? – mvds 2010-07-18 22:39:52