cari

Rumah  >  Soal Jawab  >  teks badan

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关键字,怎么还是能调用呢?

天蓬老师天蓬老师2766 hari yang lalu410

membalas semua(5)saya akan balas

  • 大家讲道理

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

    Selepas menggunakan ARC, kedua-dua @synthesize dan int _age; boleh ditinggalkan dan akan ditambah secara automatik. Kod menjadi elegan mulai sekarang!

    balas
    0
  • 伊谢尔伦

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

    Tidak dibenarkan menulis seperti ini dalam versi iOS sebelumnya Jika saya ingat dengan betul, selepas iOS7, anda boleh meninggalkan kata kunci sintesis Selagi sifat ditetapkan, sistem akan menjana kaedah perolehan dan tetapan lalai .

    balas
    0
  • 天蓬老师

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

    Disebabkan @property, kaedah penetap getter dijana secara automatik.

    balas
    0
  • 高洛峰

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

    Bertentangan dengan jawapan @isteven, peranan ARC adalah untuk menyediakan pengurusan memori automatik, bukan untuk mengabaikan @sintesis. Sebab mengapa @synthesize boleh diabaikan ialah setiap kali pembolehubah global diisytiharkan pada masa lalu, ia perlu disegerakkan semula di dalamnya. Memandangkan langkah ini telah menjadi langkah berulang, pembangunan iOS kemudiannya meninggalkan langkah ini demi kemanusiaan, dan sebenarnya memuatkan bahagian ini secara automatik.

    balas
    0
  • ringa_lee

    ringa_lee2017-04-24 09:16:05

    Pengkompil mengendalikan ini secara automatik, tidak perlu menulis sythesize

    balas
    0
  • Batalbalas