@Private如何实现?
-
08-10-2019 - |
题
在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是公共,受保护或私人的,并发出错误。这一切都是在生成任何代码之前就完成的,并且不会影响生成的代码。
不隶属于 StackOverflow