UIImage
클래스의 서브 클래스를 만들고 추가 변수가있는 사용자 정의 init
메소드를 추가하려고합니다. 그러나 새로운 이니셜 라이저를 사용하여 새 객체를 만들 때 객체는 항상 nil
입니다. 새로운 init
방법은 다음과 같습니다 :서브 클래스 화 및 init 메소드 추가 항상
#import <UIKit/UIKit.h>
@interface Dot : UIImage {
int lat;
int longi;
int dotScale;
}
@property int lat;
@property int longi;
@property int dotScale;
- (id)initWithLat:(int)latitude andLong:(int)longitude andSize:(int)size;
@end
나는 NSMutableArray
에 Dot
개체를 추가하려고 오류 받고 있어요 :
- (id)initWithLat:(int)latitude andLong:(int)longitude andSize:(int)size {
self = [super initWithContentsOfFile:@"dot.png"];
if (self) {
self.lat = latitude;
self.longi = longitude;
self.dotScale = size;
}
return self;
}
는 내가 제대로 서브 클래스있어 믿고, 여기 내 헤더 파일입니다 .
dots = [[NSMutableArray alloc] init];
[dots addObject:[[Dot alloc] initWithLat:0 andLong:0 andSize:1]];
새로운 이니셜 라이저에는 뭔가 잘못되었습니다. 나는 this을 가이드로 사용하고있었습니다.
하위 클래스를 사용하는 것이 올바른 일이라고 생각하지 않습니다. 'Dot'을'UIView'의 서브 클래스로 만드는 것이 더 나을 것이라고 생각합니다. 그런 다음'Dot' 클래스는 이미지를 그 자체에 추가 할 수 있습니다. 'Dot'은 정말로 UIImage입니까, 아니면 UIImage가있는'Dot' UIView입니까? 이것은 OOP에서 고전적인 "is a"대 "a has a"관계 질문입니다. – rmaddy
@maddy 내가 한 것은 기본적으로'dot.png'을로드하고 추가 매개 변수를 추가하는'UIImage'의 하위 클래스 인'Dot'을 만듭니다. 그런 다음 이미지를 기반으로 UIImageViews를 만듭니다. 기능적으로는 괜찮습니까? 다른 경로를 선택해야합니까? –
'Dot' 클래스는'UIImage'를 확장해서는 안됩니다. '점'은 이미지가 아니며 이미지가 있습니다. 위도가 있고 경도가있는 것처럼. '점 '을 NSObject로 확장합니다 (이전에 UIView라고했지만 잘못되었습니다). 그런 다음 다른 것들과 함께'Dot'에'UIImage' 속성을 추가하십시오. – rmaddy