検索

ホームページ  >  に質問  >  本文

objective-c - OC中间没有使用synthesize关键字,为什么还能访问呢?

#import <Foundation/Foundation.h>
/**
 
 默认的范围是protected
 
 **/
@interface Animal :NSObject
{
    
    
    int _age;
    NSString * name;
}

@property int age;
@end

@implementation Animal{
    
    
    
    
}


@end
int main(int argc, const char * argv[]) {
    
    
    Animal*  animal=[Animal  new];
    animal.age=10;
    [animal setAge:5];
    NSLog(@"age is %d",animal.age);
    
    return 0;
  
}

不是说synthesize关键字是在实现中自动生成set和get方法吗?但是我这里是没有使用
synthesize关键字,怎么还是能调用呢?

天蓬老师天蓬老师2804日前442

全員に返信(5)返信します

  • 大家讲道理

    大家讲道理2017-04-24 09:16:05

    ARC を使用した後、@synthesizeint _age;すべてを保存すると、自動的に追加されます。これからコーデもエレガントに!

    返事
    0
  • 伊谢尔伦

    伊谢尔伦2017-04-24 09:16:05

    これは以前の iOS バージョンでは許可されていませんでした。私の記憶が正しければ、iOS 7 以降は synthesize キーワードを省略できます。プロパティが設定されている限り、システムはデフォルトの get メソッドと set メソッドを自動的に生成します。

    返事
    0
  • 天蓬老师

    天蓬老师2017-04-24 09:16:05

    @propertyによりgetter setterメソッドが自動生成されます。

    返事
    0
  • 高洛峰

    高洛峰2017-04-24 09:16:05

    @istevenの答えとは対照的に、ARCの役割は自動メモリ管理を提供することであり、@synthesizeを無視することではありません。 @synthesize を無視できる理由は、過去にグローバル変数が宣言されるたびに、その中で再同期する必要があるためです。このステップは繰り返しのステップとなったため、その後の iOS 開発では人間化の目的でこのステップを省略し、実際にはこの部分が自動的にロードされました。

    返事
    0
  • ringa_lee

    ringa_lee2017-04-24 09:16:05

    コンパイラーが自動的に処理するため、sythesize を記述する必要はありません

    返事
    0
  • キャンセル返事