key-value-observing

    4熱度

    3回答

    我正在考慮使用NSMutableDictionary代替當前的NSMutableArray。這主要是針對KVC/KVO的原因。該集合將在我的繪圖方法的內部循環中經歷重度變化。如果我繼續進行這種替換,我是否會期望會產生顯着的性能下降? 乾杯, 道格

    2熱度

    1回答

    我已經成爲KVO/KVC的粉絲。我喜歡它保持我的MVC架構清潔的方式。然而,當我在3D渲染應用程序的內部渲染循環中使用KVO時,我並未愛上巨大的性能打擊,我正在設計哪些消息將以每秒60次的速度觸發每個觀察對象 - 可能有數百個。 加速KVO的技巧和訣竅是什麼?具體來說,我正在觀察一個標量值 - 而不是一個對象 - 所以也許包裝/解包正在殺死我。我也正在建立並拆除觀察 [foo addObserve

    7熱度

    1回答

    閱讀鍵 - 值編碼編程指南後,鍵 - 值觀察編程指南和模型對象實現指南,以及關於該主題閱讀許多StackOverflow的條目,並與各種建模場景試驗,我覺得我對如何建模數據有很好的把握。 我最終使用所有屬性和一對一關係的聲明屬性,由私有ivars支持。對於需要私密寫入的只讀屬性,我使用.h接口聲明中的readonly屬性,然後在.m文件中聲明的類擴展中使用readwrite屬性重新聲明該屬性。在類

    1熱度

    2回答

    我使用Cocoa綁定來管理對象表。我理解綁定是如何工作的,但我遇到了一個小問題。管理對象表格會很好用,除了那些對象必須管理實際的藍牙硬件之外。我正在開發一個框架,該框架提供了一個表示與這個硬件連接的類,並且讓另一個「管理器」類使它符合鍵值。換句話說,這個管理器類必須能夠在其屬性字典中連接和修改其「連接」狀態,成爲該硬件的代表並修改屬性,然後通過更改所做的更改來更新硬件。然而,無論何時我在對象本身中

    24熱度

    5回答

    是否有一種方法可以返回符合NSKeyValueCoding協議的對象的所有密鑰? 沿着[object getPropertyKeys]的方向會返回一個NSArray的NSString對象。它適用於任何符合KVC的對象。這種方法是否存在?到目前爲止,我還沒有發現在搜索Apple文檔中的任何內容。 感謝, G.

    9熱度

    2回答

    所以我有兩個對象Invoice和InvoiceLineItem。 InvoiceLineItem有一個名爲cost的屬性,它是基於其他屬性動態創建的。爲了幫助我使用KVO /綁定: + (NSSet *)keyPathsForValuesAffectingCost { return [NSSet setWithObjects:@"lineItemType", @"serviceCost"

    32熱度

    4回答

    我想在我的一個類中使用鍵值觀察。我在init方法中註冊了觀察者,並在dealloc中刪除/取消註冊它們,但根據我的調試打印,我得到以下錯誤,這似乎是在調用dealloc方法之前發生的。 類TekkPoint的一個實例0x583870而鍵值觀察家仍用它註冊被釋放。觀察信息正在泄漏,甚至可能被錯誤地附加到其他物體上。在NSKVODeallocateBreak上設置一個斷點,在調試器中停止。下面是當前觀

    0熱度

    1回答

    我想在下面的上下文中使用KVO: 1)的touchesBegan:withEvent:方法我ALLOC /初始化的對象的實例,我然後經由KVO 觀察我的意圖是觀察對象在其整個生命週期中的各種行爲。 2)在touchesEnded:withEvent:我將這個實例賦值給一個NSMutableArray並釋放實例引用,因爲NSMutableArray現在保留了它。我還必須通過removeObserve

    4熱度

    3回答

    我被KVC/KVO迷住了。超強大。但有一個問題。我試圖成爲真正的MVC etho,但我沒有辦法使用觀察模式來監視Objective-C類實例的分配或釋放。 這實際上很重要,因爲我有一個模型,它具有我想從控制器(或委託人)觀察到的細密內部消息傳遞。對我來說,絆腳石是我看不到模型外部的一個子組件如何在沒有控制器瞭解模型的內部邏輯的情況下釋放子組件,而這些子組件將會被釋放,從而危害封裝。 有人可以爲這種

    9熱度

    2回答

    我有一個簡單的協議與一個屬性: @protocol StopsSource <NSObject> @property (retain,readonly) NSArray * stops; @end 我添加一個鍵值觀察者別處聽更改「停止」屬性: id<StopsSource> source = ... [source addObserver:self forKeyPath:@"