2

struct是否可以为 Objective-C创建类似 C 的东西?我需要能够使用它,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;
4

1 回答 1

1

这取决于您使用的是哪种数据,您在问题中使用的示例对于结构来说似乎没问题。

如果您需要将 C 结构存储在NSArray需要对象的 中,您可以将 C-struct 转换为NSValue并像这样存储它,然后在读取时转换回其 C 结构类型。

检查 Apple文档

鉴于此结构:

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];
于 2012-10-17T02:05:41.097 回答