0

在objective-c中,对变量的访问被限制为三种类型,即,,@public(默认)和..这些访问修饰符允许我们通过4种情况依次访问变量:@private@protected@package

1-从任何地方访问变量。

2-仅在类内访问变量。

3- 从类及其子类中的任何位置访问变量。

4-从框架中的任何地方访问变量。

我的问题是:有没有办法定义一些类可以访问而不是其他类可以访问的变量?(即变量的自定义范围)

4

3 回答 3

2

您要的是 C++ 的friend关键字。Objective-C 中的朋友类讨论了这个话题。

于 2013-04-01T11:36:24.473 回答
1

您可以使用类扩展来创建更灵活的访问控制:

// MyClass.h
@interface MyClass : SomeSuperclass {
    int ivar;
}
@end

// MyClass-Custom.h
#include "MyClass.h"
@interface MyClass () {
    int anotherIvar;
}
@end

现在 anotherIvar 将只能被#includes MyClass-Custom.h 的代码访问。您可以在同一个类上创建更多类扩展以获得额外的访问组。

于 2013-04-01T13:50:21.520 回答
0

您必须编写自己的 setter 和 getter 方法。

- (id) get_abc_value:(id)from {
if ([from isKindOfClass:[SomeRespectedClass class]]) {
return abc;
} 
return nil;
}
于 2013-04-01T11:56:19.750 回答