该应用程序引用Payload中的非公共选择器:隐藏

时间:2014-06-28 18:35:58

标签: ios xcode appstore-approval

在[验证...] Xcode Organizer中的iOS应用程序时出现此错误:

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

但是,hidden是在UIView.h中定义的公共属性:

  

@property(非原子,getter = isHidden)BOOL隐藏;

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

1 个答案:

答案 0 :(得分:1)

简而言之

替换:

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

由:

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

详情

在关于KVO(键值观察)的NSHipster之后,我使用NSStringFromSelector(@selector(hidden))作为关键路径,实际上," ...任何拼写错误或拼写错误&# 39;被编译器捕获,并导致无法正常工作。"

事实证明,hidden属性有一个显式的getter,它与属性名称不同:

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

我也使用opaque属性验证了这一点。

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

验证失败: 该应用引用了Payload / 名称 .app / 计划中的非公开选择器:opaque。