Private Outlets

IBOutlets should be private to avoid leaking UIKit to higher layers

  • Identifier: private_outlet
  • Enabled by default: No
  • Supports autocorrection: No
  • Kind: lint
  • Analyzer rule: No
  • Minimum Swift compiler version: 5.0.0
  • Default configuration: severity: warning, allow_private_set: false

Non Triggering Examples

class Foo {
  @IBOutlet private var label: UILabel?
}

class Foo {
  @IBOutlet private var label: UILabel!
}

class Foo {
  var notAnOutlet: UILabel
}

class Foo {
  @IBOutlet weak private var label: UILabel?
}

class Foo {
  @IBOutlet private weak var label: UILabel?
}

class Foo {
  @IBOutlet fileprivate weak var label: UILabel?
}

class Foo {
  @IBOutlet private(set) var label: UILabel?
}

class Foo {
  @IBOutlet private(set) var label: UILabel!
}

class Foo {
  @IBOutlet weak private(set) var label: UILabel?
}

class Foo {
  @IBOutlet private(set) weak var label: UILabel?
}

class Foo {
  @IBOutlet fileprivate(set) weak var label: UILabel?
}

Triggering Examples

class Foo {
  @IBOutlet var label: UILabel?
}

class Foo {
  @IBOutlet var label: UILabel!
}

class Foo {
  @IBOutlet private(set) var label: UILabel?
}

class Foo {
  @IBOutlet fileprivate(set) var label: UILabel?
}