내지도 객체는 좌표 세트를 가지고 있습니다. 항상 동일한 수의 좌표를 갖는 것은 아닙니다. 자바에서는 객체를 Double[] xpoints
으로 선언하고 다음과 같이지도를 인스턴스화 할 때 크기를 설정합니다. xpoints = new double[npoints]
;objective-c에서 double 배열을 선언합니다.
어떻게하면 objective-c로 할 수 있습니까?
나는 이걸 시도했다 : @property(nonatomic) double * xpoints;
그러나 NSLog로 인쇄 할 때 어떻게 든 그것의 값은 모두 0으로 바뀐다.
지도의 init : 이상한
-(id)initWithXpoints:(double[]) xpointss Ypoints:(double[]) ypointss Npoints:(int)npointss
{
self = [super init];
if (self)
{
self.xpoints = xpointss;
self.ypoints = ypointss;
self.npoints = npointss;
}
return self;
}
뭔가 생각 발생합니다. 지도를 만든 객체에서 xpoints [0]을 인쇄하면 값이 0으로 변경됩니다. 처음 인쇄 할 때 작동합니다. 두 번째로 단지 제로를 인쇄합니다.
나는 init에 보낸 xpointss가 메모리에서 제거 되었기 때문에 발생한다고 생각한다. xpoints 프로퍼티가 포인터라면 어떻게 "인스턴스화"할 수 있습니까?
더 좋은 방법이 있나요? 나는이 같은 임시 xpoints을 만드는 시도 :
double tempxpoints[npointss];
double tempypoints[npointss];
for (int i = 0; i < npointss; i++)
{
tempxpoints[i] = xpointss[i];
tempypoints[i] = ypointss[i];
}
self.xpoints = tempxpoints;
self.ypoints = tempypoints;
를하지만 여전히 작동하지 않았다
덧붙였다.
편집 : 모든 답변 주셔서 감사합니다. 결국 내 최종 초기화 코드가되었습니다.
-(id)initWithXpoints:(double[]) xpointss Ypoints:(double[]) ypointss Npoints:(int)npointss
{
self = [super init];
if (self)
{
_xpoints = [[NSMutableArray alloc] init];
_ypoints = [[NSMutableArray alloc] init];
for (int i = 0; i < npointss; i++)
{
NSNumber *tempx = [NSNumber numberWithDouble:xpointss[i]];
NSNumber *tempy = [NSNumber numberWithDouble:ypointss[i]];
[_xpoints addObject:tempx];
[_ypoints addObject:tempy];
}
_npoints = npointss;
}
return self;
}
'NSArray'를 대신 사용하셨습니까? –
내가 할 수있을 것 같아. 하지만 안드로이드 용으로 만든 앱을 다른 사람이 포팅하는 중이므로 너무 많이 바꾸지는 않을 것입니다. – HSNN