我有一个自定义UIView,我将其添加为整个应用中多个位置的子视图。我通过设置属性向视图发送NSMutable数组,它显示注释图。除我的应用程序中的一个视图外,此方法均正常运行。我在包含图形的每个视图的viewDidLoad部分中使用此代码。

endNoteDisplay =[[NoteDisplay alloc] initWithFrame:CGRectMake(0,0,320,180)];
endNoteDisplay.tag = 100;
endNoteDisplay.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"Note_Bkg.png"]];
NSMutableArray *tmpNts = [[NSMutableArray alloc] initWithObjects: @"C", @"E", @"G", @"A",nil];
endNoteDisplay.noteSpread = tmpNts;
[tmpNts release];
[self.view addSubview:endNoteDisplay];
[endNoteDisplay release];
  • 如果我删除了endNoteDisplay.noteSpread = tmpNts;行,一切正常,没有泄漏。
  • 如果我将其保留在Instruments中,则显示内存泄漏。当我离开当前视图(在其中显示注释)并返回到上一个视图(它有一个表,其中包含要显示的不同注释选项的列表)时,就会发生泄漏。
  • 我的应用程序按预期运行,这是唯一的泄漏。

  • 谁能告诉我为什么这会导致泄漏?我的noteSpread中的NoteDisplay属性设置为nonatomic retain

    最佳答案

    在NoteDisplay的dealloc中,您需要将release发送到支持noteSpread的实例变量。

    10-08 05:42