讀的私有財產我有一個用Objective-C和使用.m
和.h
文件庫。斯威夫特從.m文件
是否可以爲該類編寫擴展方法並訪問僅在.m
文件中定義且未在.h
文件中定義的私有屬性?
我曾嘗試與.valueForKey
,但我只得到
payload_data_0
payload_data_1
payload_data_2
instance_type
這都是Builtin.RawPointer
類型。
讀的私有財產我有一個用Objective-C和使用.m
和.h
文件庫。斯威夫特從.m文件
是否可以爲該類編寫擴展方法並訪問僅在.m
文件中定義且未在.h
文件中定義的私有屬性?
我曾嘗試與.valueForKey
,但我只得到
payload_data_0
payload_data_1
payload_data_2
instance_type
這都是Builtin.RawPointer
類型。
號你訪問它是在頭公開定義它的唯一途徑。
沒有,在技術上你不能。這些文檔非常清楚:
擴展可以添加新的計算屬性,但它們不能添加存儲的屬性,或者將屬性觀察器添加到現有屬性。
如果您需要此目的進行測試,請考慮將私有屬性聲明移動到單獨的頭文件,如MyClass + Test.h,並將其添加到橋接頭。但是猜猜看,這使得這些屬性無論如何都是公開的。不是推薦的解決方案。
私人是私人的一個原因。你不應該試圖訪問這樣的屬性。它是休息封裝。 – rmaddy
我知道,但我寫這個擴展方法,我給它會需要訪問?所以你不認爲我有可能以某種反思的方式訪問? (如果這存在於迅速) – Jeggy