iOS 中属性与方法的访问权限等级

在 Xcode 中共有五种对变量和方法的访问权限, 其等级从低到高依次是:

  1. private
  2. fileprivate
  3. internal
  4. public
  5. open

五种等级 (由低到高)

private

只在本文件且本类 (或本类扩展) 中可以被访问

如果此类在其他文件中有 extension, 那么在其他文件的该类的 extension 中是不能被访问到的

fileprivate

只在本文件中可以被访问

一般来说一个文件中只有一个类, 此时使用 private 与 fileprivate 没有什么区别, 但是如果一个文件中有两个及以上的类的话, 那么被 fileprivate 标记的就可以在多个类中被访问, 而被 private 访问的就只能在本文件的本类 extension 中被访问

internal

本模块内可以使用

xcode 默认使用本种权限, cocoapods 即一个单独的模块 module

public

public: 本项目中各 module 任意读取, 不能在其他 module 中继承重写. 框架, api, 库中经常用, 个人开发很少用

open

本项目中各 module 任意读取, 重写, 继承

公共读取且私有读写

1
public private(set) var disposeBag = DisposeBag()