2012-10-17 2 views
2

Objective-C에 C struct과 같은 것을 만들 수 있습니까? NSArray에서 사용할 수 있어야하므로 전통적인 struct이 될 수 없습니다. 지금 저는 이것을 달성하기 위해 전체 수업을 선언하고 있으며 더 간단한 방법이 있는지 궁금해하고있었습니다.NSArray에 데이터를 넣을 수 있도록 구조체 대신 클래스를 생성해야합니까?

내가 현재 무엇을 가지고 : 내가 원하는 무엇

@interface TextureFile : NSObject 
@property NSString *name; 
@property GLKTextureInfo *info; 
@end 

@implementation TextureFile 
@synthesize name = _name; 
@synthesize info = _info; 
@end 

NSMutableArray *textures; 

:

typedef struct { 
    NSString *name; 
    GLKTextureInfo *info; 
} TextureFile; 

NSMutable array *textures; 

답변

1

그것은 당신이 사용하고있는 데이터의 종류 따라, 당신은 귀하의 질문에 사용하는 예는 좋아 보인다 구조체의 경우.

개체가 필요한 NSArray에 C 구조체를 저장해야하는 경우 C 구조체를 NSValue으로 변환하고 저장하면 읽을 때 C 구조체 형식으로 다시 변환 할 수 있습니다.

Apple Documentation을 확인하십시오.

을 감안할 때이 구조체 :

typedef struct { 
    NSString *name; 
    GLKTextureInfo *info; 
} TextureFile; 

그것을 저장하려면

TextureFile myStruct; 
// set your stuct values 

NSValue *anObj = [NSValue value:&myStruct withObjCType:@encode(TextureFile)]; 
NSArray *array = [NSArray arrayWithObjects:anObj, nil]; 

는 다시 읽으려면 :이 일 것 같아요

NSValue *anObj = [array objectAtIndex:0]; 
TextureFile myStruct; 
[anObj getValue:&myStruct]; 
+0

을하지만보다 더 불편 보인다 첫 번째 방법 : P –

+0

글쎄, 그렇지 않으면 NSObject의 하위 클래스를 만들 수있다. 개인적으로 나는 그것이 내가 더 생각한다. nconvenient :) 그것은 어떤 종류의 데이터를 전송하는지에 달려 있습니다. 귀하의 예제는 구조체에 적합하다고 보입니다. – Daniel

관련 문제