【问题标题】:What is the old-style encoding specified in the Objective-C property type?Objective-C 属性类型中指定的旧式编码是什么?
【发布时间】:2019-09-01 19:17:04
【问题描述】:

Objective-C Property Type Encoding 文档中提到的旧式编码是什么?

t 使用旧式编码指定类型。


还有什么是

该属性符合垃圾回收条件。

意思。它是否与 Objective-C 曾经拥有或与 ARC 保留计数有关的垃圾收集器有关?

【问题讨论】:

    标签: objective-c objective-c-runtime


    【解决方案1】:

    我认为他们很久以前对类型编码格式进行了细微的更改(可能是当他们回到 ObjC 2.0 并添加属性时,回到 MacOS 10.5 时间框架,甚至更早)。我不确定我是否见过实际使用的“t”;它可能是 gcc 编译器使用的东西,而不是 clang。 'T' 值是今天使用的类型编码。

    对于第二个问题,是的,这是针对过时的垃圾收集器的。

    【讨论】:

      【解决方案2】:

      Objective-C 属性类型编码文档中提到的旧式编码是什么?

      这似乎是个谜。您正在查看的“Objective-C 2.0 Runtime Programming Guide”(Apple,2009)中指定的类型编码与“Object-Oriented Programming and The Objective-C Language”(NeXT,1995)中给出的类型编码之间的唯一区别是前者添加了“B – A C++ bool 或 C99 _Bool”。

      进一步为什么属性类型字符串,它是一个“字符串 [that] 以 T 开头,后跟 @encode 类型”进一步需要在字符串后面的“t”,它“使用旧式编码指定类型“?

      如果您尝试解析属性类型字符串,您已经需要将意外字符作为错误处理——我建议您将“t”视为一个这样的错误字符。

      和Objective-C曾经有的垃圾收集器有关系吗

      这就是 Apple 在使用术语“garbage collect(or|ion)”时通常的意思(其他来源将“引用计数”称为“garbage collection”的一种),因此可以合理地假设这里——“假设”,因为在 Apple 的许多“规范”中很常见,“P”编码的语义似乎没有在任何地方定义,以及为什么静态属性类型字符串需要重复类型和属性已经提供的信息在字符串中没有解释。

      【讨论】:

        【解决方案3】:

        同一指南的其他地方是Type Encodings 文章。这解释了您的第一个问题所指的编码。

        关于你的第二个问题,是的,它指的是过时的垃圾收集器。它与 ARC 无关。

        【讨论】:

          猜你喜欢
          • 2011-12-11
          • 2012-09-05
          • 1970-01-01
          • 1970-01-01
          • 2011-12-24
          • 2011-01-29
          • 1970-01-01
          • 1970-01-01
          • 2011-08-04
          相关资源
          最近更新 更多