我有一個類中的私有變量,我試圖從外部類訪問該變量。 有沒有辦法可以做到這一點?從外部類訪問私有變量 - iOS
回答
根據定義,私有實例變量是私有的。你不能在外部訪問它們。如果您是該類的作者,則應該爲該變量提供訪問器方法。如果你不是,你應該避免訪問變量。
但是,有辦法規避這種限制。
您可以在第一個類上創建一個類別併爲該實例變量添加一個存取器方法。
或者您可以使用鍵值編碼來訪問變量。
[object valueForKey:@"variable_name"];
訪問私有實例變量的好方法 –
您可以創建自己的get/set方法...或者您可以使用Objective-C標準,將該變量聲明爲.h文件中的一個屬性,然後將其合成到.m文件中。請記住,如果其他類可以看到變量和訪問它,那麼它不再是一個 「私人」 變量
testViewController.h
@interface testViewController : UIViewController
{
NSString *someString;
}
@property (nonatomic, retain) NSString *someString;
@end
testViewController.m
#import testViewController.h
@interface testViewController
@synthesize someString=_someString;
@end
私人定義意味着它不能被外部類訪問。訪問私有數據的唯一方法是通過接口中提供的訪問器方法。
在Objective-C中,您可以創建所謂的類別。這些是您基本可以用來擴展類的功能的一組方法。我對獲得在外部類中聲明的私有成員(沒有完全實現的私有成員)的訪問並不積極,但我能夠爲我自己的類訪問私有成員編寫一個類。
#import "OtherClass.h"
@interface OtherClass(RandomAccessor)
-(int) getMyVar;
@end
@implementation OtherClass(RandomAccessor)
-(int) getMyVar
{
return self->myPrivateVar;
}
@end
我真的不建議做這樣的事情,但是,因爲開發人員通常使私人有原因的數據。
不會編譯,嘗試使用CBPeripheral的_isPaired –
- 1. PHP OOP - 使用var_dump從外部類訪問私有變量?
- 2. 從內部類訪問私有變量(AsyncTask)
- 3. 訪問類C++的私有變量
- 4. PHP私有變量訪問
- 5. WP7 - 訪問私有變量
- 6. 訪問私有變量
- 7. Java從內部類單例中訪問外部類變量
- 8. 試圖使用指針訪問類外部的私有變量,具有類外部的成員函數
- 9. 修改函數以訪問類之外的私有變量
- 10. 在類之外訪問私有靜態變量
- 11. 在內部類中訪問外部類的私有成員:JRuby
- 12. C++將外部變量導入私有類變量
- 13. 從函數外部訪問變量?
- 14. ActionScript從外部訪問函數/變量
- 15. 從外部函數訪問變量(PHP)
- 16. 從PHPBB外部訪問模板變量
- 17. 如何從Inner類訪問陰影外部類變量?
- 18. 如何從外部類訪問屬於一個類的變量?
- 19. 類中的私有變量可以從Java中的main訪問?
- 20. 從私有actionPerformed方法訪問類變量
- 21. 從子類訪問父級的私有實例變量?
- 22. 訪問從類別私有變量生成鏈接錯誤
- 23. 從內部類訪問變量
- 24. 如何從內部類訪問變量
- 25. 從抽象類訪問私有變量,訪問方法爲抽象
- 26. 從外部類訪問TextView
- 27. 如何訪問內部類中的外部類變量
- 28. Java內部類訪問外部類變量
- 29. 如何訪問外部類的變量在內部類在c#
- 30. 如何從內部類訪問外部類的類變量在紅寶石
請用代碼示例和說明說明您的問題。 –
爲什麼要聲明它是私人的,如果你想訪問它外部?我認爲這違反了封裝的基本OOP概念 – janusbalatbat
您可以使用getter,或者我相信objective-c具有可用於設置和獲取私有變量的屬性。 –