Objective-C 运行时 : What to put for size & alignment for class_addIvar?

标签 objective-c c sizeof memory-alignment size-t

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),其中 selfUITextField 的子类吗?即,我可以假设 UITextPosition 对象与 UITextField 对象的大小相同吗?

如何获得对齐

最佳答案

关于这个东西的文档不是很有用,这确实反射(reflect)出通常你不应该使用它。但是,您可以要求对齐:

char *texPosEncoding = @encode(UITextPosition);
NSUInteger textPosSize, textPosAlign;
NSGetSizeAndAlignment(textPosEncoding, &textPosSize, &textPosAlign);
class_addIvar(yourClass, "yourIvarName", textPosSize, textPosAlign, textPosEncoding);

关于 Objective-C 运行时 : What to put for size & alignment for class_addIvar?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7942345/

相关文章:

iphone - 尝试在 Xcode 4.6 中使用 AudioToolbox 播放声音时出错

c - 释放队列的第一个元素时的 SIGTRAP

c++ - 是什么导致继承和成员之间的结构体大小不同?

c++ - 我能保证所有指针都具有相同的字节大小吗?

iphone - 自定义 NSOperation 中的随机崩溃

objective-c - 适用于 Mac OSx 应用程序的 Google Analytics

c - 在 C 中多次声明一个函数有什么意义?

c - 下一个回文 SPOJ

c - 灵活的数组成员是否会增加结构的大小?

ios - UIimageView 蒙版成菱形