내가 애플에서이 코드를 발견 한 :@synthesize가 ivars를 만들면 Apple이 ivars를 만드는 이유는 무엇입니까?
@interface TiltShift : CIFilter
{
CIImage *inputImage;
NSNumber *inputRadius;
}
@property (retain, nonatomic) CIImage *inputImage;
@property (copy, nonatomic) NSNumber *inputRadius;
@end
@implementation TiltShift
@synthesize inputImage;
@synthesize inputRadius;
애플이 속성을 만들고 동시에 인스턴스 변수를 생성하고이를 합성된다. 제 질문은 애플이 왜 이러는 거죠?
내가 아는 한 Xcode는 @synthesize
이 없어도 선언 된 속성에 밑줄이있는 ivars를 만듭니다. 그래서 우리는 _inputImage
과 _inputRadius
을 이미 만들었습니다.이 코드가 주어지면 Xcode는 애플이 밑줄없이 ivars에 속성을 연결하려고한다는 것을 어떻게 알 수 있습니까?
:
@interface TiltShift : CIFilter
{
// CIImage *inputImage;
// NSNumber *inputRadius;
}
@property (retain, nonatomic) CIImage *inputImage;
@property (copy, nonatomic) NSNumber *inputRadius;
@end
@implementation TiltShift
// @synthesize inputImage;
// @synthesize inputRadius;
을하고 밑줄 인스턴스 변수가 있습니다.
그리고 이것은 단지 애플이 아닙니다. 나는 웹상에서 많은 코드를 보았고, 다른 개발자들로부터 이것을 보았다. 나는 최근의 코드에서 그것을 보았다. 내 의견으로는 이것이 나쁜 코드입니다. 왜냐하면 "실제"ivars와 ivars 사이의 속성을 백업하는 것을 구분하기가 불가능하기 때문입니다.
이와 같은 코드를 만드는 것이 합리적입니까?
아주 오래된 샘플 코드입니다. 이 모든 것은 몇 년 전에 필요 했었습니다. Objective-C는 몇 년 전에 진화하여'@ property' 만 필요하고 다른 것은 만들지 않았습니다. – rmaddy