给出以下方法:
- (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,但没有生效。 Xcode似乎与这段代码没有任何问题。有人对此有见识吗?
最佳答案
那是因为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发出警告的原因