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)

我该为sizealignment放些什么?
我正在添加一个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);

08-07 19:37