Eon*_*nil 14 objective-c public-fields
我知道用@public关键字定义公共实例变量是可能的.但是,Objective-C语法不允许访问其他类的变量.我应该从@public Ivar中得到什么功能?或者我如何访问其他类'Ivars?
Jon*_*ing 57
Objective-C作为C的超集,肯定允许从类的实现之外访问公共实例变量.现在,您可能听说不允许的原因是它非常沮丧.在大多数情况下,如果要访问实现上下文之外的实例变量,则应使用访问器和更改器(属性).
Objective-C类实际上归结为一个带有isa字段的普通C结构(这就是使它成为对象的东西),公共字段是可访问的.因为当我们处理类的实例时,我们正在处理一个指向对象的指针(特殊结构).因此,我们使用访问公共字段->.
这是一个例子:
@interface SomebodyIsntEncapsulating : NSBadIdea {
@public
NSString *badIdea;
BOOL shouldntDoIt;
@protected
NSString *ahThatsBetterThankGod;
@private
NSString *sweetThanksNowEvenMySubclassesCantTouchMe;
}
Run Code Online (Sandbox Code Playgroud)
现在,在一些完全不同的背景下,我们可以:
SomebodyIsntEncapsulating *whatOh = [[SomebodyIsntEncapsulating alloc]
initWithDanger:kDangerLevelEpicBraceYourself];
whatOh->badIdea = [@"I'm a public field. Make sure to retain or copy me!" copy];
NSLog(@"Please! Write some accessors and mutators!: %@", whatOh->badIdea);
Run Code Online (Sandbox Code Playgroud)
我希望能帮到你!
您可以像使用 - >(成员指针)运算符一样访问它,就像您通常访问c结构的成员一样(请注意,您总是有一个指向obj-c中对象的指针):
...
@public
int a;
...
myObject->a = 1;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
22542 次 |
| 最近记录: |