Jon*_*ing 4 code-generation private language-implementation objective-c
在Objective-C,我很好奇如何实例变量,如访问控制@private,@protected等来实现.
我曾经考虑过以某种方式生成单独的结构:
@interface Foo {
int bar;
@private
int baz;
@public
int qux;
}
Run Code Online (Sandbox Code Playgroud)
=> 一些东西
struct Class_Foo_Protected {
int bar;
};
struct Class_Foo_Private {
int baz;
};
struct Class_Foo_Public {
int qux;
};
Run Code Online (Sandbox Code Playgroud)
但我真的不知道.谁知道这是怎么做到的?
这些修饰符不会改变类的内存布局.编译器本身会记住哪个ivar是公共的,受保护的或私有的,并且如果您尝试从不适当的地方访问它们,则会发出错误.这是在生成任何代码之前完成的,并且不会影响生成的代码.