Press ESC to close

Swift Singleton

Merhaba arkadaşlar, bu yazımızda Singleton nedir ve Swift ile nasıl kullanılır bundan bahsedeceğiz. 

Genel olarak statik değişkenler ve fonksiyonlardan kaçınmak için kullanılan bu pattern çok yaygın bir şekilde kullanılır. Geliştirmiş olduğunuz bir Util, Manager veya bir modelde Singleton ile kolayca ulaşabilir ve geliştirmiş olduğumuz yapıyı kullanabiliriz. 

Bu yazı için yapacağımız örnekte bir Authentication Util oluşturacağız. Bu Util içinde olacak fonksiyonlar aşağıdaki gibidir;

  • Kullanıcı adı ve şifre ile giriş yap
  • FaceID/TouchID ile giriş yap
  • Çıkış Yap

Ayrıca uygulama açılırken kullanıcı giriş yapılı olup olmadığının n giriş yapıp yapmadığını kontrol eden bir değişken olacak. Bu değişkene göre sayfa yönlendirmesi yapabiliriz.

Bu örnek için tasarımım aşağıdaki gibidir.

Authentication Util için 3 fonksiyon ve değişkeni oluşturduktan sonra bu fonksiyonları kullanacağımız her sayfada ayrı ayrı instance oluşturmaktansa bu Util içinde static bir değişken oluşturuyorum. Bu değişken; genel olarak instance, shared veya default olarak tanımlanıyor. Authentication ile ilgili her şeyi buradan yönetiyorum. 

//
//  AuthenticationUtil.swift
//  singleton
//
//  Created by Ömer Sezer on 27.02.2022.
//

import Foundation

class AuthenticationUtil {
    
    static let shared = AuthenticationUtil()
    
    var isLoggedIn = false
    
    func loginWithUsername(username: String, password: String) {
        print("login successful")
    }
    
    func loginWithFaceId() {
        print("login successful")
    }
    
    func logout() {
        print("logout")
    }
}

Fonksiyonları çağırdığım View Controller’ım ise aşağıdaki gibidir. 

//
//  LoginViewController.swift
//  singleton
//
//  Created by Ömer Sezer on 27.02.2022.
//

import UIKit

class LoginViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()
    }

    @IBAction func onButtonLoginWithUsernameClicked(_ sender: Any) {
        AuthenticationUtil.shared.loginWithUsername(username: "test username", password: "test password")
    }
    
    @IBAction func onButtonLoginWithFaceIdClicked(_ sender: Any) {
        AuthenticationUtil.shared.loginWithFaceId()
    }
    
    @IBAction func onButtonLogoutClicked(_ sender: Any) {
        AuthenticationUtil.shared.logout()
    }
}

Bu şekilde kolayca kullanabilirsiniz. Projeyi detaylıca incelemek için buraya, daha fazla swift ile ilgili yazı okumak için buraya tıklayabilirsiniz. Sorularınız olursa mail veya yorum atarak ulaşabilirsiniz. İyi çalışmalar.

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir