The Objective-C Runtime provides the class_addIvar C function
BOOL class_addIvar(Class cls, const char *name, size_t size,
uint8_t alignment, const char *types)我应该为size和alignment设置什么
我添加了一个UITextPosition *类型的实例变量,但作用域中没有UITextPosition对象。对于size,我是否可以只执行sizeof(self),其中self是UITextField的子类?也就是说,我能假设一个UITextPosition对象和一个UITextField对象大小相同吗?
如何获取alignment
发布于 2012-01-24 14:34:14
关于这个东西的文档信息不是很丰富,这确实反映了通常你不应该使用它。但是,您可以要求对齐:
char *texPosEncoding = @encode(UITextPosition);
NSUInteger textPosSize, textPosAlign;
NSGetSizeAndAlignment(textPosEncoding, &textPosSize, &textPosAlign);
class_addIvar(yourClass, "yourIvarName", textPosSize, textPosAlign, textPosEncoding);发布于 2011-10-30 07:33:50
所以,首先,最大的问题是“为什么”。这只适用于你自己在运行时生成的类,你不能将ivar添加到现有的类中。
在你的例子中,你添加了一个ivar,这是一个指针类型,这意味着它们都是相同的大小。重要的是指针的大小,而不是对象的大小。
从您随后链接的文档中,您希望大小为sizeof(UITextPosition*),对齐方式为log2(sizeof(UITextPosition*))
https://stackoverflow.com/questions/7942345
复制相似问题