2014-06-28 12 views
2

我收到此错误时[验证...]的iOS应用在Xcode主办单位:该应用程序引用有效载荷非公开选择:隐藏

The app references non-public selectors in Payload/name.app/scheme: hidden

然而,hidden是在UIView.h定义为一个公共属性:(非原子,吸气剂=是否隐藏)

@property BOOL隐藏;

什么会导致公共选择器的调用失败Apple App Store验证?

回答

1

总之

替换:

[self addObserver:self 
     forKeyPath:NSStringFromSelector(@selector(hidden)) 
      options:NSKeyValueObservingOptionNew 
      context:nil]; 

由:

[self addObserver:self 
     forKeyPath:@"hidden" 
      options:NSKeyValueObservingOptionNew 
      context:nil]; 

在细节

在上下列NSHipster KVO(Key-Value Observing),我使用NSStringFromSelector(@selector(hidden))作为关键路径,因为实际上,“...任何错字或拼写错误都不会被编译器捕获,并且会导致事情无法工作。

事实证明,该hidden酒店有一个明确的getter,它是从属性的名称不同:

@property(nonatomic,getter=isHidden) BOOL hidden;

我与opaque财产验证了这一点,以及

@property(nonatomic,getter=isOpaque) BOOL opaque;

它也验证失败: 应用程序refe在有效载荷/ 名称 .app/方案:不透明。

相关问题