在objective-c中,对变量的访问被限制为三种类型,即,,@public
(默认)和..这些访问修饰符允许我们通过4种情况依次访问变量:@private
@protected
@package
1-从任何地方访问变量。
2-仅在类内访问变量。
3- 从类及其子类中的任何位置访问变量。
4-从框架中的任何地方访问变量。
我的问题是:有没有办法定义一些类可以访问而不是其他类可以访问的变量?(即变量的自定义范围)
在objective-c中,对变量的访问被限制为三种类型,即,,@public
(默认)和..这些访问修饰符允许我们通过4种情况依次访问变量:@private
@protected
@package
1-从任何地方访问变量。
2-仅在类内访问变量。
3- 从类及其子类中的任何位置访问变量。
4-从框架中的任何地方访问变量。
我的问题是:有没有办法定义一些类可以访问而不是其他类可以访问的变量?(即变量的自定义范围)
您要的是 C++ 的friend
关键字。Objective-C 中的朋友类讨论了这个话题。
您可以使用类扩展来创建更灵活的访问控制:
// MyClass.h
@interface MyClass : SomeSuperclass {
int ivar;
}
@end
// MyClass-Custom.h
#include "MyClass.h"
@interface MyClass () {
int anotherIvar;
}
@end
现在 anotherIvar 将只能被#includes MyClass-Custom.h 的代码访问。您可以在同一个类上创建更多类扩展以获得额外的访问组。
您必须编写自己的 setter 和 getter 方法。
- (id) get_abc_value:(id)from {
if ([from isKindOfClass:[SomeRespectedClass class]]) {
return abc;
}
return nil;
}