Боюсь, никакое количество Google не смогло спасти мой хайд на этом.Кажется, я получаю ошибку SIGABRT каждый раз, когда я касаюсь экрана телефона, на любом UIView.Консоль отладчика отправляет эту ошибку перед SIGABRT:
.... [310:207] *** -[UIView _exclusiveTouchView]: unrecognized selector sent to instance 0x14c0c0
.... [310:207] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** -[UIView _exclusiveTouchView]: unrecognized selector sent to instance 0x14c0c0'
(это, конечно, не мой конкретный вызов _exclusiveTouchView
)
Я с удовольствием выложу некоторый код, ноПравда в том, что я не могу найти (или догадаться), откуда может возникнуть эта проблема.Это не происходит ни на одном одном UIView, но на всех UIViews в моем стеке.Я могу суммировать логику отображения, хотя, возможно, это будет пролить некоторый свет.
Итак, приложение создано и UIWindow выделено.Затем выделяется один viewcontroller, который создает и добавляет свой собственный пустой self.view, к которому присоединяются другие UIViews, представляющие различные игровые состояния.
Интересно, что эта ошибка НЕ происходитна симуляторе, но происходит последовательно на устройстве.И я должен также упомянуть, что приложению еще предстоит переопределить / использовать любой из touchesBegan: / Ended: / Moved: etc ... Другими словами, эта ошибка происходит без этих методов в коде.
Я действительно не понимаю, откуда возникает эта ошибка ... Есть предложения?
РЕДАКТИРОВАТЬ для запрошенного кода Вот упрощенное состояние, которое все еще генерирует SIGABRT нанажмите:
#import <UIKit/UIKit.h>
#import "WPGame.h"
@class WPGame;
extern WPGame *theGame;
#import "WPGameState.h"
@class IntroView;
@interface IntroStateView : WPGameState {
NSTimer *introTimer;
}
+(IntroStateView*)instance;
@end
.
#import "IntroStateView.h"
#import "StartMenuStateView.h"
static IntroStateView *theOnlyIntro = nil;
@implementation IntroStateView
+(IntroStateView*)instance {
@synchronized(self) {
if (!theOnlyIntro) {
theOnlyIntro = [[IntroStateView alloc] init];
}
}
return theOnlyIntro;
}
- (void)excuseYourself {
[self changeStateOf:theGame toState:[StartMenuStateView instance]];
}
- (void)startUp {
[super startUp];
introTimer = [NSTimer scheduledTimerWithTimeInterval:[theGame introLength]
target:self
selector:@selector(excuseYourself)
userInfo:NULL
repeats:NO];
}
- (void)cleanUp {
[super cleanUp];
}
- (void)handleEvents:(WPGame*)game {
[super handleEvents:game];
}
- (void)dealloc {
theOnlyIntro = nil;
[super dealloc];
}
@end
, и если вам нужно увидеть части подкласса WPGameState в UIView, его можно найти здесь, чтобы сохранить некоторую длину сообщения: http://tinypaste.com/732bb