这是objective-c 代码。
@interface Foo : NSObject
{
NSInteger _a;
}
@property (nonatomaic, assign) NSInteger a;
@end
@implement Foo
@synthesize a = _a;
@end
你知道'@synthesize' 短语。@synthesize 创建波纹管代码。
- (NSInteger)a
{
return _a;
}
- (void)setA:(NSInteger)aa
{
return _a = aa;
}
让我们访问属性 a。
void main()
{
Foo foo = [[Foo alloc] init];
foo.a = 1;
}
必须将 foo.a 分配为 1。但编译器调用如下。
void main()
{
Foo foo = [[Foo alloc] init];
[foo setA:1];
}
foo.a = 1 和 [foo setA:1] 是一样的。foo.a = 1 调用 [foo setA:1]。
贝娄,用 C 语言编写。
class Foo
{
private:
int _a;
public:
int getA();
void setA(const int aa);
};
int Foo::getA()
{
return _a;
}
void Foo::setA(const int aa)
{
_a = aa;
}
// local allocation example.
void main()
{
Foo foo;
foo.setA(1);
}
// Heap allocation example.
void main()
{
Foo *foo = new Foo();
foo->setA(1);
delete foo;
}
// Pointer (like object objectve-c).
void main()
{
Foo foo1;
foo1.setA(1);
Foo *foo2 = &foo1;
foo2->setA(2);
printf("result>>> %d, %d", foo1.a, foo2->a);
}
result>>> 2, 2
foo1.a 和 foo2->a 也是 2。Objectve-C 示例如下。
void main()
{
Foo *foo1 = [[Foo alloc] init];
foo1.a = 1;
Foo *foo2 = foo1;
foo2.a = 2;
NSLog(@"result>>> %d, %d", foo1.a, foo2.a);
}
result>>> 2, 2
祝你有美好的一天。谢谢你。