加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

在Objective-C中,alloc如何知道要分配多少内存?

发布时间:2020-12-16 05:45:40 所属栏目:百科 来源:网络整理
导读:假设我有一个类被声明为: @class SomeClass@interface SomeClass: NSObject { NSString *myString; NSString *yourString;}@end 后来,在其他一些代码中我说: SomeClass *myClass = [[SomeClass alloc] init]; SomeClass如何知道要分配多少内存,因为它没有
假设我有一个类被声明为:
@class SomeClass

@interface SomeClass: NSObject {
  NSString *myString;
  NSString *yourString;
}

@end

后来,在其他一些代码中我说:

SomeClass *myClass = [[SomeClass alloc] init];

SomeClass如何知道要分配多少内存,因为它没有覆盖alloc?大概需要ivars myString和yourString的存储,但是它使用从NSObject继承的alloc.是否有参考资料涵盖这些细节?

解决方法

alloc只是一个类方法,就像其他的一样. NSObject中的默认实现使用class_getInstanceSize()来获取应该分配的实例大小.实例大小基于每类(无继承)编译时结构大小和类的总大小以及所有超类的每次运行时计算的组合确定.这是64位和iPhone运行时非易失的iVAR的可能性.

一些类,特别是类集群,直到初始化程序被调用才真正实现真正的实例分配(这就是为什么在初始化程序方法中做self = [super init]很重要的原因).

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读