概要
- @propertyは、クラス.hファイルのメンバー変数のセッター宣言とゲッター宣言を自動的に生成できます
- @synthesizeは、クラス.mファイルのメンバー変数のセッターとゲッターを自動的に生成できます
- @propertyと@synthesizeは、クラスの記述を簡素化するためのxcodeの新機能です。
2アクションのデモ
2.1 Person.hヘッダーファイルの定義(@property)
#import <Foundation/Foundation.h>
@interface Person : NSObject
{
int _age;
int age;
int _height;
double _weight;
NSString *_name;
}
@property int age;
@property int height;
@property double weight;
@property NSString *name;
-(void)test;
@end
2.2 Person.mファイルの定義(@synthesize)
#import "Person.h"
@implementation Person
@synthesize age=age;
@synthesize height=_height;
@synthesize weight=_weight;
@synthesize name=_name;
-(void)test
{
NSLog(@"age=%d,_age=%d",age,_age);
}
@end
2.3 main.mエントリファイルの呼び出し
Person *person=[Person new];
[person setAge:10];
[person test];
2.4まとめ
2.4.1 @プロパティ
-
@interfaceで使用
-
セッターおよびゲッター宣言を自動的に生成するために使用されます
-
@property int ageを使用します。次の2行を置き換えることができます
-(void)setAge:(int)age;//setter -(int)age; //getter
2.4.2 @synthesize
-
@implementationで使用
-
セッターおよびゲッター実装を自動的に生成するために使用されます
-
@synthesize age = _ageを使用してください;置き換えることができます
-(void)setAge{_age=age;}; -(int)age}{return _age};
3つはメンバー変数の書き込みを省略します
3.1宣言と実装
//声明
#import <Foundation/Foundation.h>
@interface Car : NSObject
@property int speed;
@property int wheels;
@end
//实现
#import "Car.h"
@implementation Car
@synthesize speed=_speed;
@synthesize wheels=_wheels;
@end
3.2メソッド呼び出し
Car *car=[Car new];
car.speed=100;
NSLog(@"Car的速度是%d",car.speed);
3.3説明
- 実装で
@synthesize speed=_speed;
は、メンバー変数_speedにアクセスしますが、存在しない場合は、タイプ@privateの_speed変数が自動的に生成されます。
@propertyおよび@synthesizeの使用法に代わる4つの@property
4.1コード(Dog.h、Dog.mファイルは変更しないでください)
#import <Foundation/Foundation.h>
@interface Dog : NSObject
@property int age;
@end
4.2ファイル転送(通常出力)
Dog *dog=[Dog new];
dog.age=5;
NSLog(@"Dog的年龄是%d",dog.age);