我有一个类中的私有变量,我试图从外部类访问该变量。 有没有办法可以做到这一点?从外部类访问私有变量 - 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具有可用于设置和获取私有变量的属性。 –