我相信我们可以在运行时动态地确定一个类的iVars。有没有办法在运行时分配确定的iVar? TIA ..有没有办法在Cocoa/Cocoa Touch的运行时动态分配或赋值给类的ivars?
2
A
回答
1
简短的回答,你可能想要的是:[obj setValue:@"woof" forKey:@"dog"];
和随笔...
您可以使用运行时发现的所有类的高德的搭配:
Ivar * class_copyIvarList(Class cls, unsigned int *outCount)
如:
id someObj; //assigned elsewhere
unsigned int count = 0;
Ivar * iVarList = class_copyIvarList([someObj class],&count);
for(;count>0;count--)
{
Ivar testVar = iVarList[count];
//do something with test Ivar
}
free(iVarList);
我几乎可以肯定,你会不会永远想这样做,除非是在调试场景...自省私人框架等
,或者如果你知道伊娃的名字就可以使用: Ivar object_setInstanceVariable(id obj, const char *name, void *value)
或更多objc的方式[obj setValue: @"woof" forKey:@"dog"]
这将最终失败,直到设置iVar。
你可能会做的,我已经在过去做的是反思的属性列表:
有类似的呼吁:objc_property_t * class_copyPropertyList(Class cls, unsigned int *outCount)
这对于复制不明物体,并可用于调试。
相关问题
- 1. 有没有办法给YepNope.js脚本赋予动态名称?
- 2. 有没有办法将一个CSS类动态分配给MVC4 Html.Encode条目?
- 3. 有没有办法将事件分配给整个屏幕或...?
- 4. ,有没有办法在运行时确定类的成员?
- 5. 有没有办法在运行时获取类的字节码?
- 6. 有没有办法在运行时设置#define的值?
- 7. 有没有办法让firefox不自动url解码分配给document.location.hash的值?
- 8. 有没有办法将Sencha Touch转换为Sencha EXTJs(或EXTJs Touch)?
- 9. 有没有办法在运行时动态更改Docker容器的CPU数量?
- 10. 有没有办法根据运行的编程动态指定配置规范?
- 11. 有没有办法自动分组行?
- 12. 如何分配给一个变量没有赋值运算符的值
- 13. 有没有办法强制类在运行时加载
- 14. 有没有办法在失败时重新运行测试类
- 15. 有没有办法在运行时加载类jar和包?
- 16. 有没有办法在@Size中绑定运行时值?
- 17. 有没有办法只在Tomcat/Wildfly/Glassfish启动时运行方法/类?
- 18. 有没有办法在JetBrains的“运行配置”
- 19. Reactjs:setState没有赋值给状态
- 20. 有没有办法在每次启动cmd时运行vcvars32.bat?
- 21. 有没有办法在spring启动时运行madvoc?
- 22. 有没有办法给createElement对象分配唯一的ID?
- 23. 有没有办法在运行时重命名Scala(或Java)中的方法?
- 24. 有没有办法在.NET 3.5中运行时动态创建一个对象?
- 25. 有没有办法在运行时动态更新WPF本地化字符串
- 26. 有没有办法在运行时动态加载数据提供者?
- 27. 有没有办法在Windows Perl中运行tr命令(或类似的东西)?
- 28. 有没有办法在运行时获取VBScript(.vbs)的路径?
- 29. 有没有办法在运行时更改GridViewColumn的CellTemplate?
- 30. 有没有办法在java中查询argv的运行时?