gpt4 book ai didi

ios - 为什么在 Apple 的类引用中没有将处理程序列为属性?

转载 作者:行者123 更新时间:2023-11-28 13:05:55 26 4
gpt4 key购买 nike

例如,查看 UIAlertAction,我们看到有一个便利的初始化程序,如下所示:

convenience init(title title: String?,
style style: UIAlertActionStyle,
handler handler: ((UIAlertAction) -> Void)?)

但是,在查看 the class reference 时, handler 未作为属性列出。它只有 titlestyleenabled。这是因为处理程序被封装并且不能被其他类访问,还是处理程序没有存储为类变量?

最佳答案

Is this because the handler is encapsulated and non-accessible by other classes?

是的。

通过将成员设为private,您可以使用自己的类型轻松地做到这一点:

class C
{
<b><i>private</i></b> var block: (() -> Void)?

init(_ block: (() -> Void)?) {
self.block = block
}
}

访问控制的三个级别是:

  • private 值只能在同一文件中访问。
  • internal 值只能在同一模块中访问(但跨同一模块中的多个文件)。
  • public 值也可以从其他模块访问。

如果您在启用测试的情况下进行编译,您还可以使用 @testable import MyModule 从单独的测试目标访问内部内容。

有关 Access Control 的更多详细信息,请参阅文档.

关于ios - 为什么在 Apple 的类引用中没有将处理程序列为属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32753955/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com