Objective C中的动态原始类型属性设置

2 primitive properties objective-c

我正在尝试编写一个库,以便它足够通用,有用.问题是它需要更新其他类的属性,属性和类都应该是动态的.

现在我可以使用公共变量做到没有问题,我只是传递一个指向我想要更新的变量的指针.然而,设置类的属性也是非常有用的,因为它们在目标C中被如此自由地使用.

现在,只要属性是对象类型,尝试设置基本类型属性,这也不是问题.

我当前的代码看起来像这些行的属性:

NSInvocation* invoc = [NSInvocation invocationWithMethodSignature:[[myInstance class] instanceMethodSignatureForSelector:mySelector]];
[invoc setTarget:myInstance];
[invoc setSelector:mySelector];
[invoc setArgument:&myObject atIndex:2];
[invoc invoke];
Run Code Online (Sandbox Code Playgroud)

但是,setArgument方法仅允许指针类型,但允许属性具有任何基本类型.有没有办法动态分配基本类型属性?

die*_*ikh 5

KVO应该为您进行转换:

[object setValue:[NSNumber numberWithInt:i] forKey:@"myVar"];
Run Code Online (Sandbox Code Playgroud)

NSNumber如果myVar定义为:将转换为int :

int myVar;
...
@propery (nonatomic) int myVar;
Run Code Online (Sandbox Code Playgroud)