Swift - Singleton Pattern: Unterschied zwischen den Versionen

Aus Wikizone
Wechseln zu: Navigation, Suche
 
(2 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 1: Zeile 1:
 +
== 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.  
 
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.
 
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.
 +
 +
Normalerweise kann man auf eine static var nur über den Klassennamen zugreifen. Dadurch dass die Klasse sich selbst als Eigenschaft enthält kann man nun auch über die Instanzen auf statische Variablen zugreifen.
  
 
<syntaxhighlight lang="swift">
 
<syntaxhighlight lang="swift">

Aktuelle Version vom 31. Januar 2023, 18:27 Uhr

Links[Bearbeiten]

Swift (Programmiersprache)

Einführung[Bearbeiten]

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.

Normalerweise kann man auf eine static var nur über den Klassennamen zugreifen. Dadurch dass die Klasse sich selbst als Eigenschaft enthält kann man nun auch über die Instanzen auf statische Variablen zugreifen.

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