在运行时创建实例变量

Ani*_*mar 3 objective-c ios

我想在运行时动态创建实例变量,我想将这些变量添加到类别中.实例变量的数量可能会根据我用于定义它们的配置/属性文件而更改.

有任何想法吗??

das*_*ght 5

使用关联引用 - 这很棘手,但这是专门为您的用例发明的机制.

以下是上面链接中的示例:首先,您定义一个引用并使用它将其添加到您的对象objc_setAssociatedObject; 然后你可以通过调用来检索值objc_getAssociatedObject.

static char overviewKey;

NSArray *array = [[NSArray alloc] initWithObjects:@ "One", @"Two", @"Three", nil];
NSString *overview = [[NSString alloc] initWithFormat:@"%@", @"First three numbers"];

objc_setAssociatedObject (
    array,
    &overviewKey,
    overview,
    OBJC_ASSOCIATION_RETAIN
);
[overview release];

NSString *associatedObject = (NSString *) objc_getAssociatedObject (array, &overviewKey);
NSLog(@"associatedObject: %@", associatedObject);

objc_setAssociatedObject (
    array,
    &overviewKey,
    nil,
    OBJC_ASSOCIATION_ASSIGN
);
[array release];
Run Code Online (Sandbox Code Playgroud)