【问题标题】:Why isn't `__NSArrayI` a kind of `[NSArray class]?为什么`__NSArrayI` 不是一种`[NSArray 类]?
【发布时间】:2020-01-10 23:57:59
【问题描述】:

所以我正在编写一个 NSTableView。一切都很好——直到我的控制流停止工作。

由于某种原因,一个数组定义为_permanentItems = @[ @[@"My", @"Permanent"], @[@"Items"] ] 不是一种NSArray

为什么会这样?

对于上下文 - 它确实适用于 NSNumber Why @(NO) isn't kind of class NSNumber

【问题讨论】:

  • 请不要(仅)显示代码图片。这里没有任何东西可以复制和粘贴来测试您的代码!

标签: objective-c cocoa


【解决方案1】:

isKindOfClass 方法适用于实例:

如果接收者是aClass的实例或继承自aClass的任何类的实例,则为YES,否则为NO。

itemClass 的类型本身是一种元类型,它不是一种 NSArray。你的意思是:

if ([item isKindOfClass: arrayClass]) { ... }
     ^^^^

如果您需要完全在类中工作并且没有实例,那么您可以改用+isSubclassOfClass:

if ([itemClass isSubclassOfClass: arrayClass])) { ... }
               ^^^^^^^^^^^^^^^^^^

【讨论】:

    猜你喜欢
    • 2023-03-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-23
    • 2012-03-25
    相关资源
    最近更新 更多