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
? 最佳答案
这方面的文档不是很翔实,这反映了一般你不应该使用它。但是,您可以要求对齐:
char *texPosEncoding = @encode(UITextPosition);
NSUInteger textPosSize, textPosAlign;
NSGetSizeAndAlignment(textPosEncoding, &textPosSize, &textPosAlign);
class_addIvar(yourClass, "yourIvarName", textPosSize, textPosAlign, textPosEncoding);