Swift - Singleton Pattern: Unterschied zwischen den Versionen

Aus Wikizone
Wechseln zu: Navigation, Suche
Zeile 6: Zeile 6:
  
 
Daher kann man sie nutzen, wenn man über alle Instanzen immer auf den gleichen Wert zugreifen will, egal wo sich die Instanz befindet.
 
Daher kann man sie nutzen, wenn man über alle Instanzen immer auf den gleichen Wert zugreifen will, egal wo sich die Instanz befindet.
 +
 +
Um diese Eigenschaft zu realisieren nutzt das Singleton Pattern eine statische Variable. In dieser Variable wird eine Instanz der Klasse selbst gespeichert.
 +
 +
Frage wenn man statt einer Instanz der Klasse selbst eine Instanz einer andern Klasse als statische Variable definiert. Ist das dann auch ein Singleton?
 +
  
 
<syntaxhighlight lang="swift">
 
<syntaxhighlight lang="swift">

Version vom 31. Januar 2023, 18:21 Uhr

Links

Swift (Programmiersprache)

Einführung

Singletons sind Eigenschaften einer Klasse, die in allen Instanzen der Klasse gleich sind. Wenn man den Wert in einer Instanz ändert, sind auch alle anderen Instanzen betroffen.

Daher kann man sie nutzen, wenn man über alle Instanzen immer auf den gleichen Wert zugreifen will, egal wo sich die Instanz befindet.

Um diese Eigenschaft zu realisieren nutzt das Singleton Pattern eine statische Variable. In dieser Variable wird eine Instanz der Klasse selbst gespeichert.

Frage wenn man statt einer Instanz der Klasse selbst eine Instanz einer andern Klasse als statische Variable definiert. Ist das dann auch ein Singleton?


import UIKit

/**
 With the singleton pattern you can share properties through all instances of a class
 */

/**
 Normally all properties of a class are independent of each other...
 */
class Car{
    var color = "red"
}

var aCar = Car()
aCar.color = "blue"
var bCar = Car()
// aCar is blue, bCar ist red

/**
 With singleton pattern you create a instance of the class itself
 as a property of the class
 */
class Ship{
    var color = "red"
    static let singletonShip = Ship()
}
var aShip = Ship.singletonShip
var bShip = Ship.singletonShip
// now aShip and bShip hold a reference to the SAME object
bShip.color = "pink"
print(aShip.color) // pink
print(bShip.color) // pink

// Singletons are used in Swift ie
// UserDefaults.defaults