Cocoa基礎模式 兩階段建立

2021-07-31 06:52:48 字數 941 閱讀 2399

兩階段建立模式將第一階段(物件記憶體分配)與第二階段(物件初始化)隔離開來。要有效的使用cocoa必須遵從兩階段建立模式。

兩階段建立使程式設計師能在控制如何為物件分配記憶體的同時,為初始化例項提供了靈活性。兩階段建立在為cocoa類建立子類的同時簡化了例項初始化,並提供了簡便的建立和初始化臨時物件的方法。

未使用兩階段建立的缺點

在類方法中,初始化例項有很多缺點。分配和初始化合併在一起會導致方法組合的出現,必須實現這些方法以處理分配物件可能使用的所有不同方法。

cocoa的nsobject基類為新例項提供了兩種分配記憶體的方法,即+(id)alloc 和 +(id)allocwithzone:(nszone*)azone.這兩個方法會分別返回乙個指標,指向新分配的記憶體塊,以便儲存執行此方法的類例項。

分割槽

初始化已分配的記憶體

一旦為新例項分配了記憶體,例項方法會立即初始化此記憶體。例項方法名為initializers,按照約定,開頭字母是init,並返回乙個id。分配記憶體和初始化基本上位於**的同一行,模式如下:[[class alloc]init].

將例項建立的分配和初始化階段分開有很多好處。可以使用+alloc類方法的任何變體來分配例項,然後使用新例項的可用初始化方法,這樣就能建立你自己的初始化方法,而無須提供所有分配方法的備用實現。

由於現有方法幾乎能滿足所有需要,因此很少會建立新的分配方法。但是,幾乎為每個類都要建立乙個或多個新的初始化方法。由於分配和初始化階段是分開的,初始化方法的實現只需要處理新例項的變數,並完全忽略有關分配的問題。

分配和初始化分開的乙個不良後果是,需要注意一些約定,比如指定初始化方法。你必須知道哪些方法是指定初始化方法,以及如何在子類中建立和記錄新的初始化方法。從長期角度來講,使用指定初始化方法能簡化軟體開發過程,但是對cocoa開發者來說必須在早期就學習兩階段建立模式。

兩階段提交

1 二階段提交協議 一般分為協調器c和若干事務執行者si兩種角色 當執行某一事務t的所有站點si都通知c事務執行完成,c即啟動二階段提交協議。1.首先c向所有si發訊息 c先將訊息寫到本機日誌 si收到訊息後,根據本機t的執 況,如果成功返回,不成功返回。返回前都應把要返回的訊息寫到日誌裡 2.c收...

兩階段提交

在分布式系統中,事務往往包含有多個參與者的活動,單個參與者上的活動是能夠保證原子性的,而多個參與者之間原子性的保證則需要通過兩階段提交來實現,兩階段提交是分布式事務實現的關鍵。很明顯,兩階段提交保證了分布式事務的原子性,這些子事務要麼都做,要麼都不做。而資料庫的一致性是由資料庫的完整性約束實現的,永...

兩階段提交

翻譯自 不像在本地資料庫的事務,分布式資料庫涉及到在多個資料庫中改變資料,因此,分布式事務處理更加複雜,因為資料庫間必須協調保證整個事務的原子性,即要不全部成功,要不全部失敗。事務一旦提交,無法回滾 資料保證資料的完整性的方式是使用兩階段提交 xa transaction 第一階段稱為準備階段,事務...