在註冊回調以使用KVO進行更改時,這適用於編譯器警告。KVO - Cocoa回調'類'與'NSObject *'中不兼容的指針類型
這是一個意外(它的工作原理),還是有一些特殊的醬我要申請壓制警告?是否有每個班級的全球單身'+'NSObject?
[defaults addObserver:[MyClass class] forKeyPath:@"values.SomeValueThatITrack" options:options context:nil];
然後我也有MyClass.m:
+(void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context;
{
usual blah
}
實際警告字符串: 「不兼容的指針類型發送 '類' 到類型爲 'NSObject的*'
的志願參數變化是全球喜好相關的變化,因此可以由類本身來處理,而不是任何單一實例。
你爲什麼要這樣做,而不是創建一個單身人士?這不是通常的做法,所以你至少要採取經過較少測試的方法。 – Chuck
單身人士有各種與他們相關的代碼,他們需要特殊的線程處理等。所以要做單身人士,我需要創建一個完全特殊的簡單類,它實際上只是一個簡單的單身人士的持有人,只能擁有全球意義。更簡單的方法是在適當的類中使用+方法。 –
我不會考慮採用一種可能未經測試的代碼路徑,它違背成語和框架的設計,比複製和粘貼8行代碼更簡單,但我想這是您要維護的代碼庫。 – Chuck