搜索

首页  >  问答  >  正文

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 天前412

全部回复(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
  • 取消回复