#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关键字,怎么还是能调用呢?
ARC 사용 후
@synthesize
,int _age;
모두 생략 가능하며 자동으로 추가됩니다. 이제부터 코드가 우아해집니다!이전 iOS 버전에서는 이렇게 쓰는 것이 허용되지 않았습니다. 제 기억이 맞다면 iOS7 이후에는 합성 키워드를 생략해도 됩니다. 속성이 설정되어 있으면 시스템이 자동으로 기본 get 및 set 메소드를 생성합니다. .
@property 때문에 getter setter 메소드가 자동으로 생성됩니다.
@isteven의 답변과 달리 ARC의 역할은 @synthesize를 무시하는 것이 아니라 자동 메모리 관리를 제공하는 것입니다. @synthesize를 무시할 수 있는 이유는 과거에 전역 변수가 선언될 때마다 해당 변수에서 다시 동기화되어야 하기 때문입니다. 이 단계가 반복적인 단계가 되었기 때문에 나중에 iOS 개발에서는 인간화를 위해 이 단계를 생략하고 실제로는 이 부분을 자동으로 로딩했습니다.
컴파일러가 이를 자동으로 처리하므로 sythesize를 작성할 필요가 없습니다