【问题标题】:KVC and modern syntaxKVC 和现代语法
【发布时间】:2016-10-18 20:02:00
【问题描述】:

KVC 是否采用了 Objective-c 字面量(也称为“现代 Objective-c”)的任何特性

我想知道,如果有比

[someObject setValue:someValue forKey:someKey];

【问题讨论】:

    标签: objective-c kvc


    【解决方案1】:

    对象订阅接近KVC:

    someObject[someKey]=someValue;
    

    请注意,对象订阅和 KVC 遵循不同的代码路径,因此行为可能不一样。但是,没有什么理由。

    除了这个可能会怀疑,如果这是更清晰的语法:

    object[@"a"]=object[@"b"]=object[@"c"];
    

    发送了哪些消息?

    【讨论】:

      【解决方案2】:

      可能和你一样,我找不到任何相关信息

      但我认为 KVC 遵循“现代objective-c”的问题在于编译器无法判断您是否引用了超出范围的变量,或者您是否拼错了某些内容。

      所以我认为 KVC 总是必须遵循标准的消息语法

      【讨论】:

      • 编译器也不(不能)检查someDict[aKey]的有效性。
      • @JoshCaswell +1 而且:具有相同信息(对象、键、值)的不同语法可以总是生成相同的代码。可以想到v[k]->-->>object
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-08-29
      • 2010-12-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-03-28
      相关资源
      最近更新 更多