搜尋

首頁  >  問答  >  主體

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關鍵字,怎麼還是能呼叫呢?

天蓬老师天蓬老师2803 天前435

全部回覆(5)我來回復

  • 大家讲道理

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

    使用ARC以後,@synthesizeint _age;都可以省了,都會自動添加。從此程式碼變得優雅無比!

    回覆
    0
  • 伊谢尔伦

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

    之前的iOS版本這樣寫是不可以的,如果沒記錯的話是從iOS7之後可以神略不寫synthesize關鍵字了,只要property了,系統會自動產生預設的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
  • 取消回覆