考虑以下方法:
- (void)sendEvent:(UIEvent *)event
{
NSSet *allTouches = [event allTouches];
if ([allTouches count] > 0)
{
_lastUserTouchTime = [[NSDate date] timeIntervalSince1970];
}
[super sendEvent:event];
}
[event allTouches]在AppCode 2016.3中生成以下检查警告。
“方法'allTouches'在类'UIEvent'中定义,不可见”
allTouches在< UIKit / UIEvent.h> 中定义,我尝试过这包括无效。 Xcode对这段代码似乎没有任何问题。有人对此有所了解吗?
答案 0 :(得分: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发出警告
的原因