objective-c - OC中间没有使用synthesize关键字,为什么还能访问呢?
天蓬老师
天蓬老师 2017-04-24 09:14:05
0
5
411
#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关键字,怎么还是能调用呢?

天蓬老师
天蓬老师

欢迎选择我的课程,让我们一起见证您的进步~~

모든 응답(5)
大家讲道理

ARC 사용 후 @synthesize, int _age; 모두 생략 가능하며 자동으로 추가됩니다. 이제부터 코드가 우아해집니다!

伊谢尔伦

이전 iOS 버전에서는 이렇게 쓰는 것이 허용되지 않았습니다. 제 기억이 맞다면 iOS7 이후에는 합성 키워드를 생략해도 됩니다. 속성이 설정되어 있으면 시스템이 자동으로 기본 get 및 set 메소드를 생성합니다. .

Peter_Zhu

@property 때문에 getter setter 메소드가 자동으로 생성됩니다.

小葫芦

@isteven의 답변과 달리 ARC의 역할은 @synthesize를 무시하는 것이 아니라 자동 메모리 관리를 제공하는 것입니다. @synthesize를 무시할 수 있는 이유는 과거에 전역 변수가 선언될 때마다 해당 변수에서 다시 동기화되어야 하기 때문입니다. 이 단계가 반복적인 단계가 되었기 때문에 나중에 iOS 개발에서는 인간화를 위해 이 단계를 생략하고 실제로는 이 부분을 자동으로 로딩했습니다.

左手右手慢动作

컴파일러가 이를 자동으로 처리하므로 sythesize를 작성할 필요가 없습니다

최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿