gpt4 book ai didi

objective-c - "dynamic ivars"是否打破了 Objective-c 的 "strict superset of C"范式?

转载 作者:搜寻专家 更新时间:2023-10-30 19:54:31 26 4
gpt4 key购买 nike

感谢Yuji回答another question我有并指向我 this article about dynamic ivars in Objective-C .

但是,正如我在 other question 中所解释的那样sizeof 运算符现在的行为不一致。简而言之,sizeof 不会考虑类 .m 文件外部的动态 ivars,但会考虑它们在 .m 文件内部的影响在创建动态 ivar 的 @synthesize 声明之后。

所以我的问题是,这是否打破了 Objective-C 是 C 的严格超集的想法?

最佳答案

没有。所有有效的 C 代码仍然是有效的 Objective-C 代码,具有与 C 中相同的含义,因此 Objective-C 仍然是一个严格的超集。请记住,允许超集具有子集中没有的特性——这就是 Objective-C 可以拥有它所具有的所有附加功能和语法同时保持 100% C 兼容的全部原因。

这确实影响了实现细节,即 Objective-C 类本质上是 C 结构类型,具有一组作用于它们的函数。请注意,与 objC_setAssociatedObject() 可以类似的功能可以在完全不改变 C 语言本身的情况下为 CoreFoundation 风格的纯 C 结构实现——并且它会产生类似的副作用使 sizeof() 不能完全“准确”地了解结构包含的所有数据。

关于objective-c - "dynamic ivars"是否打破了 Objective-c 的 "strict superset of C"范式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4089316/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com