문제

목표 c에서 크기 5의 int 배열을 선언, 속성을 설정하고 합성 및 구현하는 방법은 무엇입니까? 이 코드를 iPhone 앱에 쓰고 있습니다. 감사.

도움이 되었습니까?

해결책

"코코아"가해야 할 일은 내부적으로 사용하더라도 INT 배열을 숨기는 것입니다. 같은 것 :

@interface Lottery : NSObject {
    int numbers[5];
}

- (int)numberAtIndex:(int)index;
- (void)setNumber:(int)number atIndex:(int)index;
@end

@implementation Lottery

- (int)numberAtIndex:(int)index {
    if (index > 4)
        [[NSException exceptionWithName:NSRangeException reason:[NSString stringWithFormat:@"Index %d is out of range", index] userInfo:nil] raise];
    return numbers[index];
}

- (void)setNumber:(int)number atIndex:(int)index {
    if (index > 4)
        [[NSException exceptionWithName:NSRangeException reason:[NSString stringWithFormat:@"Index %d is out of range", index] userInfo:nil] raise];
    numbers[index] = number;
}

다른 팁

시도해 볼 것이 있습니다. .h 파일에서 :

@property int* myIntArray;

그런 다음 .m 파일에서 다음과 같습니다.

@synthesize myIntArray;

@synthesize를 사용하는 경우 아마도 init () 동안 배열을 직접 malloc/calloc해야합니다.

또는 배열이 할당되기 전에 호출되면 자신의 액세서 기능을 작성하고 Malloc/Calloc을 만들 수 있습니다.

어느 쪽이든, Dealloc () 메소드에서 배열을 제거하고 싶을 것입니다.

내가 객관적인 C 자신을 겪고 있기 때문에 이것은 순진하고 잘못되었을 것입니다. 그러나 지금까지는 저를 위해 일하는 것 같습니다.

배열을 사용하려면이 경우 int를 사용해서는 안됩니다. NSNUMBER를 사용하고 5 개의 NSMUMBERS를 NSMUTABLEARRAY에 넣으십시오.

@interface testClass: NSObject {
     NSMutableArray* numbers;
}
@property (nonatomic, retain) NSMutableArray* numbers;
-(id)initWithValue:(NSNumber *)initialValue;
@end


@implementation testClass
@synthesize numbers;
-(id)initWithValue:(NSNumber *)initialValue {
     numbers = [[NSMutableArray alloc] initWithCapacity:5];
     [numbers addObject:initialValue];
     return self;
 }
@end

합성 (테스트 된 BTW 아님)을 사용한 인터페이스 및 구현 코드입니다. 당신은 무엇을 성취하려고합니까?

좋은 빠른 소개

클래스 변수가 있습니다.

NSInteger myInt[5];

내 코드에서 일반 myint [1] = 0 구문을 사용할 수 있도록 정수 포인터를 반환하는 속성을 만들었습니다.

@property (nonatomic, readonly) NSInteger *myInt;

그런 다음 다음 getter 방법을 만들었습니다.

-(NSInteger *) myInt {
  return myInt
}

이제 class.myint [1] = 0과 같은 것을 사용할 수 있습니다.

글쎄, 나는 이것이 확실히 잘 모르겠지만, 그것은 보인다. 다른 사람이 시도하고 싶다면 이것을 거기에 넣을 것이라고 생각했습니다.

당신이 무엇을하든, 당신은 결과를 알고 있어야합니다.

정수 배열은 참조 계산되지 않습니다. 얼마나 많은 사람들이 접근하고 있는지 모릅니다. 당신은 누가 그것을 거래 해야하는지, 언제. 따라서 int*유형의 속성을 쉽게 가질 수 있습니다. 세터는 포인터를 가져 와서 인스턴스 변수에 저장합니다. Getter는 인스턴스 변수의 내용을 반환합니다. 그것은 단지 작동합니다.

그러나 배열이 언제 할당되거나 거래되어야하는지 모릅니다. 정적 배열 (예 : 숫자가 포함 된 4 개의 다른 테이블)이있는 경우 문제가 없습니다. 그러나 malloc ()가있는 정수 배열을 만들면 누군가가 무료로해야합니다 (). 그래서 언제 일어날까요?

배열의 수명을 수동으로 처리 해야하는 것은 쓰레기이므로 NSNUMBER의 NSARRAY를 사용하거나 참조 계산으로 정수 배열을 저장하기 위해 남용 될 수있는 nspointerArray를 보거나 직접 만들 수 있습니다. 이전 답변에서 복권 수업과 같은 수업은 조금 더 유연합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top