gpt4 book ai didi

access-modifiers - Swift 有访问修饰符吗?

转载 作者:搜寻专家 更新时间:2023-10-31 21:49:07 27 4
gpt4 key购买 nike

在 Objective-C 中,实例数据可以是publicprotectedprivate。例如:

@interface Foo : NSObject
{
@public
int x;
@protected:
int y;
@private:
int z;
}
-(int) apple;
-(int) pear;
-(int) banana;
@end

我没有在 Swift 引用资料中找到任何关于访问修饰符的提及。是否可以在 Swift 中限制数据的可见性?

最佳答案

As of Swift 3.0.1, there are 4 levels of access , 下面从最高(限制最少)到最低(限制最多)进行描述。


1。 openpublic

使实体能够在定义模块(目标)之外使用。在指定框架的公共(public)接口(interface)时,您通常使用 openpublic 访问。

但是,open 访问权限仅适用于类和类成员,它与public 访问权限的区别如下:

  • public 类和类成员只能在定义模块(目标)内进行子类化和覆盖。
  • open 类和类成员可以在定义模块(目标)内外进行子类化和覆盖。

// First.framework – A.swift

open class A {}

// First.framework – B.swift

public class B: A {} // ok

// Second.framework – C.swift

import First

internal class C: A {} // ok

// Second.framework – D.swift

import First

internal class D: B {} // error: B cannot be subclassed

2。 内部

使实体能够在定义模块(目标)中使用。在定义应用或框架的内部结构时,您通常使用internal 访问。

// First.framework – A.swift

internal struct A {}

// First.framework – B.swift

A() // ok

// Second.framework – C.swift

import First

A() // error: A is unavailable

3。 文件私有(private)

将实体的使用限制在其定义的源文件中。当在整个文件中使用这些细节时,您通常使用 fileprivate 访问权限来隐藏特定功能的实现细节。

// First.framework – A.swift

internal struct A {

fileprivate static let x: Int

}

A.x // ok

// First.framework – B.swift

A.x // error: x is not available

4。 私有(private)

将实体的使用限制在其封闭声明中。当这些细节仅在单个声明中使用时,您通常使用 private 访问来隐藏特定功能的实现细节。

// First.framework – A.swift

internal struct A {

private static let x: Int

internal static func doSomethingWithX() {
x // ok
}

}

A.x // error: x is unavailable

关于access-modifiers - Swift 有访问修饰符吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24005826/

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