我正在尝试在Objective-C中在运行时动态设置实例变量的值。 假设我有一个名为stock的类,它有一个实例变量float price。 我有以下代码:
stock* s;
...//initialisation etc
float newPrice = 12.56;
Ivar variable = class_getInstanceVariable(NSClassFromString(@"stock"), "price");
float* pricePointer = (float*)((char *)c + ivar_getOffset(variable));
(*pricePointer) = newPrice;
NSLog(@"%f", [s price]);
但最后一行始终表示价格为0.00即。没有设置。 我确实在价格上宣布了一处房产。所以[s price]应该正确地返回价格。
有谁能告诉我这里我做错了什么?
干杯 纳伦
答案 0 :(得分:0)
发现问题。 由于类库存包含实例变量价格以及物业价格,因此未设置实例变量的值。而是财产的价值。这不会起作用,因为属性是一种方法。