V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  acumen  ›  全部回复第 10 页 / 共 10 页
回复总数  197
1  2  3  4  5  6  7  8  9  10  
2016-10-21 12:17:29 +08:00
回复了 acumen 创建的主题 C 关于 OC 底层的一个问题
@mofet 这篇博文, isa 指针是很清晰,我想弄明白的是,对象和类背后结构体之间的关系 并且和图中的对应关系。谢谢回复
2016-10-21 12:14:37 +08:00
回复了 acumen 创建的主题 C 关于 OC 底层的一个问题
@coa 我来总结一下,大神看看对不对。
现在我们涉及到 objc_object , objc_class , isa , meta-class , class_t , NSObject 这几个。
objc_object 其实就是我们常见的 id 在 C 语言中的表示, objc_object 结构体中的 isa 指向 objc_class , objc_class 中的 isa 指向 meta-class 。

struct objc_class {
Class isa OBJC_ISA_AVAILABILITY;

#if !__OBJC2__
Class super_class OBJC2_UNAVAILABLE;
const char *name OBJC2_UNAVAILABLE;
long version OBJC2_UNAVAILABLE;
long info OBJC2_UNAVAILABLE;
long instance_size OBJC2_UNAVAILABLE;
struct objc_ivar_list *ivars OBJC2_UNAVAILABLE;
struct objc_method_list **methodLists OBJC2_UNAVAILABLE;
struct objc_cache *cache OBJC2_UNAVAILABLE;
struct objc_protocol_list *protocols OBJC2_UNAVAILABLE;
#endif

} OBJC2_UNAVAILABLE;

这个是 objc.h 中 objc_class 的定义。这样说 meta-class 也是一个 objc_class 。
class_t 这里就这样理解:其实每个对象和类,在 runtime 中都对应一个结构体,而生成这样的结构体需要一个‘模版’(这里解释了文中‘基于’的意思)。

结合网上流传的这张图。这里的 instance of subclass 对应 objc_object , class 对应 objc_class , meta class 对应的还是 objc_class 。
![]( http://ww4.sinaimg.cn/large/934b5ef8gw1f8zozdhi0wj20gm0hddi1.jpg)

至于 NSObject 所对应的 meta class 就是上图右上角的 root class ( meta )。

卒.
2016-10-21 00:39:09 +08:00
回复了 acumen 创建的主题 C 关于 OC 底层的一个问题
@coa 感谢你的解答,很详细。第一点想明白了。
第二点,我所了解的 objc_object 中的 isa 指向的是 objc_class 接下去 objc_class 其中的 isa 指向谁呢?
对于 oc 每个具体的类对应一个 meta-class , meta-class 其实也是基于 class_t ?这样说的话 class_t 就是所有对象的所对应的最底层的一个结构体了?

我的理解不知道有没有问题?
2016-10-20 21:53:12 +08:00
回复了 uper 创建的主题 Project Babel v2ex 贴图很不方便
2016-10-18 00:01:43 +08:00
回复了 jellybool 创建的主题 PHP 录了几个有关 Github 的视频,我觉得你也应该知道这些...
顶一下再收藏
2016-10-17 18:21:24 +08:00
回复了 dongweiming 创建的主题 推广 赠送几本《Python Web 开发实战》
23
2016-10-16 19:04:15 +08:00
回复了 CodingNET 创建的主题 iOS iOS 架构模式 - 简述 MVC, MVP, MVVM 和 VIPER (译)
马克
2016-10-06 19:41:31 +08:00
回复了 zongren 创建的主题 程序员 如果我去面试 iOS 和 android,别人考我算法题
移动端笔试题目出现 ml 也出现过
插上耳机也会出现类似推荐
2016-09-14 15:35:44 +08:00
回复了 lty494685444 创建的主题 职场话题 阿里是不是 TM 有病...实力开除
据说是几分钟写出一个 js 脚本,也是很服气的。
2016-09-08 16:44:01 +08:00
回复了 mornlight 创建的主题 酷工作 [上海]想尝试一次体面的 iOS 招聘
简历已发,希望有机会可以聊聊
@acumen 忘加问号。 iOS 有招大三实习生?
iOS 有招大三实习生
iOS 找实习生吗?
2016-06-02 19:33:18 +08:00
回复了 acumen 创建的主题 求职 [实习生][IOS]弱求下半年 IOS 实习岗位
自己顶一下~:]
2016-06-02 12:25:23 +08:00
回复了 acumen 创建的主题 求职 [实习生][IOS]弱求下半年 IOS 实习岗位
@onevcat 喵神~大环境也强了了很多~进 bat 、猪厂学历硬伤
1  2  3  4  5  6  7  8  9  10  
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5535 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 33ms · UTC 01:36 · PVG 09:36 · LAX 17:36 · JFK 20:36
Developed with CodeLauncher
♥ Do have faith in what you're doing.