Ios 什么';s在类扩展中声明ivar是错误的吗?

Ios 什么';s在类扩展中声明ivar是错误的吗?,ios,Ios,在类扩展中声明ivar更好吗? 或者这只是开发人员的首选项?目前,您无法将实例变量添加到类扩展中。swift和Obj-C都是如此。请参见以下问题: 如果您的意思是,通过向接口扩展添加iVar: @interface MyClass(){ MyIvar *ivar } 嗯,这是一个选择和方便的问题。通常,您应该将公共接口限制为一组最小的属性/方法,以允许用户以您设计/期望的方式与类交互。虽然您的代码使用这两种方法都可以正常工作,但暴露更多属性/函数可能会导致更多问题,因为消费类可能会以非

在类扩展中声明ivar更好吗?
或者这只是开发人员的首选项?

目前,您无法将实例变量添加到类扩展中。swift和Obj-C都是如此。请参见以下问题:

如果您的意思是,通过向接口扩展添加iVar:

@interface MyClass(){
    MyIvar *ivar
}

嗯,这是一个选择和方便的问题。通常,您应该将公共接口限制为一组最小的属性/方法,以允许用户以您设计/期望的方式与类交互。虽然您的代码使用这两种方法都可以正常工作,但暴露更多属性/函数可能会导致更多问题,因为消费类可能会以非计划或意外的方式使用属性/函数。

顾名思义,它是类功能的扩展。您可以使用扩展向类添加额外的行为。添加成员变量或存储属性有很多问题,即:

  • 当可以在扩展中添加数据成员时,原始类不知道添加的数据成员。这导致在为此类类创建对象时为此类成员分配问题

  • 它还可能在初始化和反初始化数据成员时产生问题,因为原始init()或deinit()方法不知道这些数据成员

  • 添加数据成员可能会改变类行为的本质


  • 你试过了吗?它有用吗?