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

浏览:57日期:2023-12-14

问题描述

#import <Foundation/Foundation.h>/** 默认的范围是protected **/@interface Animal :NSObject{ int _age; NSString * name;}@property int age;@end@implementation Animal{}@endint 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关键字,怎么还是能调用呢?

问题解答

回答1:

使用ARC以后,@synthesize和int _age;都可以省了,都会自动添加。从此代码变得优雅无比!

回答2:

之前的iOS版本这样写是不可以的,如果没记错的话是从iOS7之后可以神略不写synthesize关键字了,只要property了,系统会自动生成默认的get和set方法。

回答3:

因为 @property 了,就自动生成了getter setter 方法。

回答4:

反对@isteven 的答案,ARC的作用是提供内存自动管理的作用,而并非忽略@synthesize的原因。可以忽略@synthesize的原因是过去每次声明全局变量后,都需要在里面重新同调。既然这个步骤成为了重复步骤,ios开发后来为了人性化,就省略了这个步骤,实际上就是自动加载了这一部分。

回答5:

编译器自动处理了 不用再写sythesize

相关文章: