【问题标题】:Understanding this use of "(Private)" in @interface declaration了解@interface 声明中“(私有)”的这种用法
【发布时间】:2011-06-28 20:23:25
【问题描述】:

我见过一些这样写的代码:

@interface AViewController(Private)

我想知道(Private) 在提交到 App Store 时是否意味着什么?一般是什么意思?

【问题讨论】:

    标签: objective-c ios cocoa-touch interface method-declaration


    【解决方案1】:

    这是一个名为“私人”的类别。

    查看 Objective-C 编程参考的Categories and Extensions 章节

    这意味着它是对 AViewControler 类的补充,为了方便起见,它被命名为“Private”。它可以被称为任何东西,甚至可以留空来创建类扩展。

    您可以在自己的代码中创建您的应用可以调用的私有方法。这实际上是一种很好的做法,因为它表明了适当的封装(尽管在 Objective-C 中没有私有方法之类的东西)。如果您不希望您的应用被 App Store 拒绝,则不允许在代码中使用 iOS 框架的私有方法。

    【讨论】:

      【解决方案2】:

      (Private) 在这种情况下涉及面向对象编程的原则。

      这不一定表示私有 API,这会违反 Apple iPhone 开发者协议。

      注意: App Store 审批是非常黑箱的,所以我不能保证这样的代码在审批过程中确实不会导致拒绝。

      【讨论】:

      • 谢谢 :) 现在我明白了 :D
      • 这个答案非常具有误导性。没有最佳实践表明为隐藏私有方法而创建的类别命名为私有。无论如何,我看不出这与继承或应用商店有什么关系。
      • @Perception, inheritance 可能是错误的 OOP 原则来参考。尽管如此,OP 的关注点还是与 App Store 的批准有关。所以我的重点是定义private这个词。不知道为什么这会让我的回答误导。然而,Abizern 有一个更彻底的答案,专注于(Private)
      • @Jason,您是正确的,因为 OP 引用了有问题的应用商店。
      • @Perception,您似乎对此事有强烈的意见。为什么不提供答案?
      【解决方案3】:

      Private 只是在对象上定义类别的一种方式。对 Apple 来说意义不大,但我建议在向知名库(例如 FoundationFramework 中的库)添加类别时使用唯一名称。如果您的命名约定是 AV 的前缀,则添加这样的类别。

      @interface AViewController(AVPrivate);

      【讨论】:

      • 谢谢,这两个答案都很有用:)
      猜你喜欢
      • 1970-01-01
      • 2010-10-09
      • 2015-02-23
      • 1970-01-01
      • 1970-01-01
      • 2011-01-10
      • 2013-10-14
      • 1970-01-01
      相关资源
      最近更新 更多