在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;
};
但我真的不知道。有人知道这到底是怎么做到的吗?
发布于 2010-12-04 16:24:12
这些修饰符不会改变类的内存布局。编译器本身会记住哪个ivar是公有的、受保护的还是私有的,如果你试图从不合适的地方访问它们,编译器就会发出错误。这一切都是在生成任何代码之前完成的,并且不会影响生成的代码。
https://stackoverflow.com/questions/4352619
复制相似问题