iT邦幫忙

2024 iThome 鐵人賽

DAY 28
0
Mobile Development

IOS的打怪升級之路系列 第 28

鐵人賽第二十八天 不同的畫面傳值 上 單例(Singleton)的使用

  • 分享至 

  • xImage
  •  

說明

當我們我們在多個不同的畫面有傳值需求時有兩種方法一種是單例(Singleton)另外一種是protocol,本文將要說明單例(Singleton),明天是protocol。使用單例可以確保某一個類別在應用程式生命週期中只存在一個實例,並且可以從任何地方存取該實例。/images/emoticon/emoticon08.gif

實作

  1. 宣告單例的類別:我們首先建立一個用來保存使用者資料的類別,並將其設計為單例模式。在這個例子中,user_value 是我們的單例類別,內部保存了一些使用者相關的資料,例如是否為小孩 (ischild)、帳號 (account)、密碼 (password) 等。
class user_value {
    var ischild = false
    var account = ""
    var password = ""
    let id = 0 // 可以宣告常數
    
    // 單例實例
    static let shared = user_value()
    
    // 將初始化設為 private,防止外部建立新實例
    private init() {}
}
  1. 在其他畫面存取與修改值:使用單例的好處是我們可以在任何需要的地方直接存取並修改它的屬性。例如,在其他畫面中存取使用者的密碼或更新是否為小孩的屬性。
// 取值
let userPassword = user_value.shared.password

// 修改數值
user_value.shared.ischild = true

結語

單例模式非常適合用於多個畫面需要共享相同的資料,並且這些資料在應用程式的生命週期中只需要存在一個實例。透過設置單例,我們可以簡單地從各個地方存取或修改資料,無需每次都重新初始化,節省了資源並提高了程式的可讀性。明天將會探討另一種傳值方式——protocol,讓我們可以更加靈活地傳遞資料。/images/emoticon/emoticon07.gif


上一篇
鐵人賽第二十七天 天氣API(六) 設定tableview的顯示與API的完結
下一篇
鐵人賽第二十九天 不同的畫面傳值 下 protocol的使用
系列文
IOS的打怪升級之路30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言