【问题标题】:How are objects laid out in memory in objective-CObjective-C中的对象是如何在内存中布局的
【发布时间】:2013-01-28 07:59:32
【问题描述】:

在阅读继承和类别时,我发现内存概念与我在 C++ 中学到的略有不同。

任何人都可以对目标 c 中对象在内存中的布局方式的基本问题有所了解吗?

当我在 Xcode 中使用任何对象时,在后台工作的消息机制是什么。

【问题讨论】:

  • 这听起来至少是两个相当广泛的问题。也许会更详细?
  • 如果第一个问题得到回答,第二个问题将随之而来:)
  • 你是指对象的外在布局——即所有对象如何相对于彼此排列——还是内在布局——即单个对象内容的排列?这两个答案都很无聊,但我想我会问你想要哪一个。 :)

标签: ios objective-c xcode memory-management


【解决方案1】:

您可以在系统上的 objc.h 头文件中看到 ObjC 对象的布局:

/// Represents an instance of a class.
struct objc_object {
    Class isa;         /**< Pointer to the class definition of which this 
                        *   object is an instance. */
};

您可以在此处找到一篇文章,展示 objc_msgSend 的工作原理(通过构建它的更原始版本):

http://www.mikeash.com/pyblog/friday-qa-2012-11-16-lets-build-objc_msgsend.html

【讨论】:

  • 这两篇文章很繁琐。谁能给我一个简洁的答案??
  • 方法存储在 Class 对象上并在运行时查找。这是你的简明答案。
【解决方案2】:

【讨论】:

  • 请尝试提供一些评论,说明此链接为何有用以及它包含哪些信息。
猜你喜欢
  • 2013-01-22
  • 2014-03-07
  • 2010-12-10
  • 1970-01-01
  • 2015-08-27
  • 1970-01-01
  • 1970-01-01
  • 2010-09-29
  • 1970-01-01
相关资源
最近更新 更多