2016-12-06 27 views
0

Учитывая следующий метод:Что вызывает «метод„Foo“определен в классе„Bar“и не видно» в AppCode

- (void)sendEvent:(UIEvent *)event 
{ 
    NSSet *allTouches = [event allTouches]; 

    if ([allTouches count] > 0) 
    { 
     _lastUserTouchTime = [[NSDate date] timeIntervalSince1970]; 
    } 

    [super sendEvent:event]; 
} 

В [allTouches событий] генерирует следующее предупреждение инспекционной AppCode 2016.3.

"Метод 'allTouches' определяется в классе 'UIEvent' и не видна"

allTouches определяется в < UIKit/UIEvent.h> который я пытался не в том числе не эффект. У Xcode, похоже, нет проблем с этим битом кода. Кто-нибудь знает об этом?

+0

Он выглядит правильно. Вы пробовали это в деле делегата? Подобно; - (void) touchesBegan: (NSSet *) касается событияEvent: (UIEvent *) –

ответ

1

Это потому, что allTouches определяется как свойство

Посмотрите на этот код:

NS_CLASS_AVAILABLE_IOS(2_0) @interface UIEvent : NSObject 
... 
#if UIKIT_DEFINE_AS_PROPERTIES 
@property(nonatomic, readonly, nullable) NSSet <UITouch *> *allTouches; 
#else 
- (nullable NSSet <UITouch *> *)allTouches; 
#endif 
... 
@end 

Более поздние версии IOS SDK использует свойства, а не методы. И AppCode имеет более строгие проверки типов, чем Xcode. Вот почему Xcode молча компилируется, и AppCode дает предупреждения