【问题标题】:how to use correctly retain and release in an app for iPhone / iPad如何在 iPhone / iPad 的应用程序中正确使用保留和释放
【发布时间】:2011-02-01 09:12:41
【问题描述】:

我是使用 Objective-C 为 iPhone / iPad 编程的新手。

我在释放或保留对象时遇到内存管理问题。 我正在做一个包含多个用于切换视图的视图控制器的应用程序。

大多数使用的对象都被声明为 IBOutlets,我想知道我应该如何以及何时使用 Retain 和 release 来避免内存问题并结束观察正确的应用程序。

在切换到另一个视图控制器或者我不必多次使用对象时释放它们会很有趣。

谁能解释我必须如何以及何时必须使用保留和释放?我已经阅读了 Apple 的文档,但我认为这有点令人困惑。我必须把它放在 dealloc 或 didReceiveMemoryWarning 中,但不能解决我的问题。

如果我犯了拼写错误,我很抱歉。 谢谢你。

【问题讨论】:

    标签: iphone ipad sdk release retain


    【解决方案1】:

    要查找项目中的泄漏,请使用检测工具运行应用程序,或者通过 shift+command+A 从 xcode 中简单地运行应用程序。

    你使用 alloc 和 init 的每个对象都应该被释放,否则会导致内存泄漏。 在 .h 文件中声明每个对象并设置属性并在 dealloc 方法中释放该 obj。

    仅当您离开页面后必须保留当前状态时才需要保留。

    【讨论】:

    • 简短但很好解释和理解,谢谢!我会尝试看看它是如何工作的。
    【解决方案2】:

    如果您将 copy mutablecopy retainalloc 发送到对象,那么您有责任在完成后释放该对象。

    NSString *allocedString = [[NSString alloc] initWithString:@"world"];
    NSString *myString = [NSString stringWithFormat:@"Hello%@", allocedString];
    
    [allocedString release], allocedString = nil;
    

    你有责任释放allocedString,但 myString(内部使用autorelease

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-04-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-05-19
      • 1970-01-01
      • 2011-07-25
      • 1970-01-01
      相关资源
      最近更新 更多