2017-05-07 52 views
0

讀的私有財產我有一個用Objective-C和使用.m.h文件庫。斯威夫特從.m文件

是否可以爲該類編寫擴展方法並訪問僅在.m文件中定義且未在.h文件中定義的私有屬性?

我曾嘗試與.valueForKey,但我只得到

payload_data_0 
payload_data_1 
payload_data_2 
instance_type 

這都是Builtin.RawPointer類型。

+2

私人是私人的一個原因。你不應該試圖訪問這樣的屬性。它是休息封裝。 – rmaddy

+0

我知道,但我寫這個擴展方法,我給它會需要訪問?所以你不認爲我有可能以某種反思的方式訪問? (如果這存在於迅速) – Jeggy

回答

0

號你訪問它是在頭公開定義它的唯一途徑。

0

沒有,在技術上你不能。這些文檔非常清楚:

擴展可以添加新的計算屬性,但它們不能添加存儲的屬性,或者將屬性觀察器添加到現有屬性。

如果您需要此目的進行測試,請考慮將私有屬性聲明移動到單獨的頭文件,如MyClass + Test.h,並將其添加到橋接頭。但是猜猜看,這使得這些屬性無論如何都是公開的。不是推薦的解決方案。