Bru*_*ean 2 syntax objective-c
我一直在寻找这个简单问题的答案,没有运气.所以这里是:是否可以在不使用点符号的情况下访问Objective-C中的Object的结构值,即仅使用规范的消息语法?例如,假设我们有一个为粒子对象定义的CGPoint实例变量position!
//Particle.h
@interface Particle : NSObject {
CGPoint position
}
@property CGPoint position;
@end
Run Code Online (Sandbox Code Playgroud)
和相应的实现:
//Particle.m
#import "Particle.h"
@implementation Particle
@synthesize position;
@end
Run Code Online (Sandbox Code Playgroud)
并假设在其他*.m文件(比如AppController.m)中我们有:
a_particle = [Particle alloc];
[a_particle setPosition:CGPointMake(x_val,y_val)];
Run Code Online (Sandbox Code Playgroud)
那为什么我们不能使用:
[[a_particle position] x];
Run Code Online (Sandbox Code Playgroud)
得到x_val而不是:
a_paticle.position.x;
Run Code Online (Sandbox Code Playgroud)
注意到后者工作正常?另请注意
[a_particle position].x;
Run Code Online (Sandbox Code Playgroud)
会工作,但我试图用点符号避免混乱.我的预感是结构实例变量必须使用点表示法来访问它的值(在这种情况下是x_val和y_val),这是真的吗?
结构来自C,因此必须使用传统的C方法进行访问.您可以使用.
或使用取消引用它们来访问结构的字段->
,这是唯一的方法.传递消息是Objective-C的事情并没有真正意义,因为它们实际上并不是Objective-C对象.
归档时间: |
|
查看次数: |
392 次 |
最近记录: |