是否可以为Objective-C创建类似C struct
的内容?我需要能够在NSArray
中使用它,因此它不能是传统的struct
。现在我宣布全班只是为了完成这个,我想知道是否有更简单的方法。
我现在有什么:
@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;
答案 0 :(得分: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];