2015-10-16 56 views
-1

使用KVC設置不可訪問的屬性。這是建議嗎?使用KVC設置不可訪問的屬性。這是否允許?

說我想更改UIDatePicker文本顏色,這是Apple框架不允許的。

我可以使用KVC編輯屬性嗎?

datePicker.setValue(UIColor.whiteColor(), forKey: "textColor") 

這是一個很好的編程習慣嗎?因爲我們使用KVC訪問私有財產

回答

1

由於無法訪問,我假設您的意思是「私有API」。

有兩個問題的方法:

  1. 蘋果會拒絕你的應用程序,如果你將其提交到商店;主要原因在於:

  2. 私有API是私人的,因此開發人員不會依賴它們:通常,API在Apple內部仍是一項正在進行的工作,因此該規範可能會在將來的任何OS版本中發生變化。 Apple可以使用私有API,因爲 - 當然,他們有機會在每次更新操作系統時更新所有預安裝的應用程序。但是依賴它們的第三方應用程序可能會中斷。

如果您打算髮布您的應用程序的內部,B2B,企業,越獄等,您不必擔心拒絕;然而,當用戶(比如說)用戶從iOS 9升級到iOS 10時,應用程序的可能性仍然存在。

編輯:考慮之後,我不確定蘋果是否可以檢測到您的私有財產的KVC訪問;畢竟,你沒有調用任何私有方法(包括getters/setter)。但我不知道他們如何「掃描」他們審查的應用程序,所以...

0

這是一個很好的編程習慣嗎?

爲什麼?

它違反了oop的基礎知識。一個對象提供了一組可以依賴的方法和屬性。在它後面,你無法知道對象是否具有該屬性。該對象可能是完全不同的東西,只是實現可用的方法。

相關問題