在 Objective-C 中,我很好奇如何实现实例变量的访问控制,如 @private
、@protected
等。
我曾考虑过像这样以某种方式生成单独的结构:
@interface Foo {
int bar;
@private
int baz;
@public
int qux;
}
=>
类似于
struct Class_Foo_Protected {
int bar;
};
struct Class_Foo_Private {
int baz;
};
struct Class_Foo_Public {
int qux;
};
但我真的不知道。有人知道这是怎么做到的吗?
最佳答案
这些修饰符不会改变类的内存布局。编译器本身会记住哪个 ivar 是公共(public)的、 protected 或私有(private)的,如果您尝试从不适当的地方访问它们,则会发出错误。这一切都在生成任何代码之前完成,并且不会影响生成的代码。
关于objective-c - @private 是如何实现的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4352619/