2012-11-28 2 views
0

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 

나는 NSMutableArrayDot 개체를 추가하려고 오류 받고 있어요 :

- (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을 가이드로 사용하고있었습니다.

+0

하위 클래스를 사용하는 것이 올바른 일이라고 생각하지 않습니다. 'Dot'을'UIView'의 서브 클래스로 만드는 것이 더 나을 것이라고 생각합니다. 그런 다음'Dot' 클래스는 이미지를 그 자체에 추가 할 수 있습니다. 'Dot'은 정말로 UIImage입니까, 아니면 UIImage가있는'Dot' UIView입니까? 이것은 OOP에서 고전적인 "is a"대 "a has a"관계 질문입니다. – rmaddy

+0

@maddy 내가 한 것은 기본적으로'dot.png'을로드하고 추가 매개 변수를 추가하는'UIImage'의 하위 클래스 인'Dot'을 만듭니다. 그런 다음 이미지를 기반으로 UIImageViews를 만듭니다. 기능적으로는 괜찮습니까? 다른 경로를 선택해야합니까? –

+0

'Dot' 클래스는'UIImage'를 확장해서는 안됩니다. '점'은 이미지가 아니며 이미지가 있습니다. 위도가 있고 경도가있는 것처럼. '점 '을 NSObject로 확장합니다 (이전에 UIView라고했지만 잘못되었습니다). 그런 다음 다른 것들과 함께'Dot'에'UIImage' 속성을 추가하십시오. – rmaddy

답변

1

initWithContentsOfFile:은 파일을 찾을 수없는 경우 nil을 반환합니다. 찾을 수 있습니까? 로깅/브레이크 포인트를 사용하여 귀하의 피부 발육기 동안 일어나는 일을 찾으십시오.

1

initWithContentsOfFile에 대한 설명서는 다음과 같습니다

 
initWithContentsOfFile: 
Initializes and returns the image object with the contents of the specified file. 

- (id)initWithContentsOfFile:(NSString *)path 

Parameters 
path 
The path to the file. This path should include the filename extension that identifies the type of the image data. 

Return Value 
An initialized UIImage object, or nil if the method could not find the file or initialize the image from its contents. 

참고가 지정된 파일이 호출이 전무를 반환합니다 것을 발견 할 수없는 경우. 아마도 'dot.png'파일을 찾을 수 없다는 확실한 확신이 있습니다. 특히 전체 경로를 지정하지 않았으므로. 어쨌든이 값을 하드 코딩해야하는 이유를 상상할 수 없습니다. 파일 이름에 대한 매개 변수를 이니셜 라이저에 추가해야합니다.

관련 문제