【问题标题】:If my property has no setter (readonly), is it true that UIKit retains the value if it's not NSNumber or NSValue?如果我的属性没有设置器(只读),如果它不是 NSNumber 或 NSValue,UIKit 是否会保留该值?
【发布时间】:2010-10-21 13:52:07
【问题描述】:

我想弄清楚在哪些情况下我需要关心属性方面的内存管理。我从一个我不记得的网站上写下了一些东西,他们说如果一个属性有除 NSNumber 或 NSValue 以外的任何值,并且如果它没有设置器,那么 UIKit 将自动释放旧值并保留新值。虽然我不明白为什么 UIKit 会在没有设置器的情况下设置任何东西(我猜是直接设置值)。

【问题讨论】:

    标签: objective-c iphone memory-management


    【解决方案1】:

    您应该(重新)阅读Memory Management Guide for Cocoa。属性的内存管理规则与所有其他对象相同。

    【讨论】:

      【解决方案2】:

      如果属性声明为:

      @property(retain) NSString *prop;
      

      当你分配一个新值时它会释放旧值。

      但是,请确保在您的 dealloc 方法中也释放它:

      - (void)dealloc {
          [prop release];
      
          [super dealloc];
      }
      

      【讨论】:

        猜你喜欢
        • 2011-07-28
        • 1970-01-01
        • 2012-05-31
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多