これは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;
}
プロパティにアクセスしてみましょう。
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および[foosetA:1]は同じです。foo.a =1は[foosetA: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
良い一日を過ごしてください。ありがとうございました。