我想询问是否建议将类别中的属性添加到目标C类。如果可以共享某些官方苹果链接,那么它会很棒。
由于
答案 0 :(得分:2)
首先,我想说Peter Segerblom的答案是不正确的。但也许Daji-Djan的评论会产生误导。
从一开始:
声明属性仅仅是两个(一个 - 用于只读属性)方法的声明。期。
因此,您可以在类别中添加声明属性。
但是如果属性是明确地或隐含地(Apple:自动地)合成的话,它将合成一个ivar,如果没有的话。 这个是不可能的,因为它会改变实例对象的内存占用时间,并且已经分配了实例对象。
所以你必须做以下事情之一:
但是,对于计算属性,对于其值存储在另一个对象中的属性,对于其值存储为关联对象的属性,这可用于...
答案 1 :(得分:0)
您可以使用关联对象执行此操作。虽然不建议这样做。此链接包含您需要了解的所有内容。
http://nshipster.com/associated-objects/
博客中的部分:
关联对象应被视为一种最后的方法,而不是寻找问题的解决方案(实际上,类别本身不应该在工具链的顶部开始)。
答案 2 :(得分:-1)
你可以很容易地做到这一点 - 如果苹果这样做,我不知道。他们经常在类别中公开属性..
无论如何,如果你的设计有意义,请继续!请记住,虽然您可以添加属性,但无法将变量添加到现有类中。
所以要么具有计算属性,要么是一种“便利包装器”'围绕现有功能或使用关联存储添加变量
答案 3 :(得分:-3)
您无法向类别添加属性。我认为这与处理内存的方式有关。将实例变量添加到现有对象将改变对象的大小。