如果一类继承nsobject,则放置多少开销
how much overhead is put if a class inherit NSObject
我有一个轻巧的C 类,需要移植到Objective-C上,以利用NsObject提供的设施。C 类将有成千上万的实例,我不想通过将其包装在Nsobject派生的类中来添加太多开销。
nsobject有多大?
首先,您应该从NSObject
下降。不这样做没有明显的好处。NSObject
在类的最低级别表示方面没有添加任何添加的存储空间,但添加了很多行为,可以使您的课程与Runloop正确地行动,并具有正常的集合(例如,NSArray
或NSDictionary
),并且几乎所有内容否。
专门回答您的问题:
#import <objc/runtime.h>
...
NSLog(@"obj size: %zd", class_getInstanceSize([NSObject class]));
在iOS上输出'4'和64位OS X上的" 8"。因此,您要寻找的答案是"整数的自然大小"。NSProxy
的大小相同,UIView
(在iOS上)为84个字节。
class_getInstanceSize
的文档在这里 - 它明确返回" cls cls实例中的大小",如名称。
在Apple文档中说
所有Objective-C类的根类都是NSOBJECT,这是一部分 基础框架。可可或可可触摸中的所有物体 应用程序最终从nsobject继承。这个课是 主要的访问点,其他类与 Objective-C运行时间
所以我会说每个Objective-C类最终都来自NSObject,因此您别无选择。请纠正我,如果我错了。
编辑:我现在了解到的是,nSobject是一个根类,它实现了每个Objective-C类所期望的基本行为。因此,基本上,您可以编写一个Objective-C类,该类实现NsObject的协议(我认为这是Objective-C表示界面),并您自己实现了alloc
和init
的基本内容。请务必查看此线程:如何在Objective-C中实例化不继承NSOBJECT
编辑:对Objective-C中的root类更深入的了解,非常有趣!
- 实现无开销push_back的最佳方法是什么
- 复制列表初始化的隐式转换的等级是多少
- while循环中while循环的时间复杂度是多少
- 如何检查一个c++字符串中有多少相同的字符/数字
- C++有多少类型的循环
- 求出有多少个数字是完美平方,而sqrt()是L,R范围内的素数
- 在条件变量中触发错误信号的频率是多少
- 定义类型的成本/开销是多少?
- 此操作在C++中通过引用进行修改的开销是多少
- 如果类没有任何成员变量,则通过临时对象调用类的成员函数的开销是多少?
- 每个对象内存分配有多少开销
- 与C 中的普通指针相比,智能指针的开销是多少
- 如果内部的总工作量相同,那么将for循环拆分为多个for循环的开销是多少
- 如果一类继承nsobject,则放置多少开销
- C++:contst static DEBUG 和 if 语句,实际的执行时间开销是多少
- shared_ptr线程安全的开销是多少?
- C++智能指针取消引用 - 检查它是否已初始化的开销是多少?
- 包装器函数的开销应该是多少?
- getaddrinfo()的时间开销是多少?
- 如果在保持相同类型的同时添加constness, static_cast运行时开销是多少?