OC開発-@プロパティと@合成(26)

概要

  • @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);
362の元の記事を公開 118の賞賛 530,000ビュー

おすすめ

転載: blog.csdn.net/Calvin_zhou/article/details/105373481