Objective-C-在不扩展类的情况下添加一些属性,有没有办法?

Objective-C-在不扩展类的情况下添加一些属性,有没有办法?,objective-c,properties,extending,Objective C,Properties,Extending,问题是:(当我使用Spritekit节点时,我需要一些设置,以便在SKSpriteNode、SKLabelNode类等内部访问。设置存储在非常基本的类型(字符串、数组、浮点)中。SpriteNode具有属性“name”但这对我来说还不够,我需要一些数组字段,因为我需要的设置很少 不知何故,有没有办法将这些设置添加到SKNode类中,这样它们就可以成为SKSPriteNode和SKLabelNode类的一部分 我不想让NSDictionary字段成为MyScene(SKScene)类的成员,以ke

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

不知何故,有没有办法将这些设置添加到SKNode类中,这样它们就可以成为SKSPriteNode和SKLabelNode类的一部分

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


我只想创建一个包含设置的节点,直接从该节点读取这些设置,然后根据设置执行进一步的操作。

子类化将是首选方法


有一种叫做decorator模式的东西,但是使用obj-c可能会让你更加困难。

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

你可以使用Categories@Guilherme你不能添加类别的属性为什么不仅仅是子类?@ChrisH据我所知,他想使用类已经拥有的相同数据,但想读“一次全部”。他可以创建一个方法,收集所有信息并在一个对象中输出。如果他确实需要一个新属性,是的,类别不是解决方案。Tnx Guillerme,但我认为ChrisH使用类别添加属性是正确的…我需要我自己的设置(设置属性)在这些类中…我要求其他解决方案,因为我认为因为一个或两个字段而对所有这些类进行子类化有点“丑陋”。这正是我想要的:)