【问题标题】:Objective-C - Adding some properties without extending class, is there a way?Objective-C - 添加一些属性而不扩展类,有没有办法?
【发布时间】:2014-06-11 20:17:19
【问题描述】:

这是问题所在:(当我使用 Spritekit 节点时,我需要一些设置可以在 SKSpriteNode、SKLabelNode 类等中访问...设置存储在非常基本的类型(字符串、数组、浮点数)中。SpriteNode 具有属性“名称”,但这对我来说还不够,我需要一些数组字段,因为我需要更多设置...

有没有办法以某种方式将这些设置添加到 SKNode 类中,这样它们就可以成为 SKSPriteNode 和 SKLabelNode 类的一部分?

我不想让 NSDictionary 字段作为 MyScene (SKScene) 类的成员来以 key->value 格式存储所有设置,因为访问它们需要更多不必要的编程逻辑。

我只是想,在里面创建带有设置的节点,直接从该节点读取这些设置,并根据设置进行进一步的操作。

【问题讨论】:

  • @Guilherme 您无法添加具有类别的属性
  • 为什么不只是子类?
  • @ChrisH 据我了解,他想使用类已经拥有的相同数据,但想“一次性”阅读。他可以制作一种方法来收集所有信息并将其吐出到一个对象中。如果他确实需要一个新属性,是的,Category 不是解决方案。
  • Tnx Guilherme,但我认为 ChrisH 关于添加具有类别的属性是正确的......我需要在这些类中自己的设置(设置属性)......我要求其他解决方案,因为我认为它很少由于一两个字段,将所有这些类子类化是“丑陋的”。

标签: objective-c properties extending


【解决方案1】:

如果我正确地阅读了您的需求,那么听起来您只是想使用 userdata 属性。每个 SKNode 都有一个名为 userdata 的 NSDictionary 属性。你只需要初始化它,然后添加你的数据。

【讨论】:

  • 这正是我想要的:)
【解决方案2】:

子类化将是首选方法。

有一种叫做装饰器模式的东西,但是使用 obj-c 对你来说可能会更难。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-11-28
    • 2011-07-31
    • 1970-01-01
    • 1970-01-01
    • 2021-06-24
    • 2018-07-02
    • 1970-01-01
    相关资源
    最近更新 更多