给出以下方法:

- (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发出警告的原因

10-08 05:47