【问题标题】:Assigning values : difference between properties and class variables?赋值:属性和类变量之间的区别?
【发布时间】:2023-04-06 06:41:01
【问题描述】:

我注意到我很少使用属性,因为我很少需要在我的类之外访问对象的变量;)

所以我通常会这样做:

NSMutableArray *myArray; // not a property !

我的问题是:即使我没有将 myArray 声明为属性,如果我这样做,iphone 是否会保留

myArray = arrayPassedToMe;

我想是的,但我只是想确认一下;)

欢迎任何想法!

哥特

【问题讨论】:

    标签: iphone properties variable-assignment class-variables


    【解决方案1】:

    只是为了补充凯文的答案,在这种情况下,您还需要确保 myArray 当前指向的任何现有对象在您为其分配新值之前已被释放,这意味着:

    [myArray release];
    myArray = [otherArray retain];
    

    当你通过声明的属性访问你的类变量时,所有这些保留/释放内存的东西都会自动为你完成,让你的生活更轻松。

    【讨论】:

      【解决方案2】:

      如果您不使用“保留”声明属性,则不会进行保留调用。通常最好使用属性访问器(在所有情况下,它都会使内存管理更加简单),但是您可以像这样执行手动保留:

      myArray = [otherArray retain];
      

      【讨论】:

      • 所以如果我明白了,如果我只是做 myArray = otherArray; myArray 将是对 otherArray 的引用?这样如果 otherArray 被释放, myArray 会自动释放,对吗?如果 otherArray 被修改,myArray 也会被修改?
      • 是的,AFAIK 该语句只是创建了一个引用。如果您不想让对象留下来,您应该retain它。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-12-06
      • 2014-08-22
      • 1970-01-01
      • 2023-03-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多