【发布时间】:2011-12-31 23:08:21
【问题描述】:
我已经在这个问题上旋转了 2 个小时,所以我想在这里发布一些建议。
在我的 viewDidLoad 方法中,我这样做:
UIScrollView *scrollView = [[UIScrollView alloc] initWithFrame:CGRectMake(0, 0, 320, 600)]; ... UIView *contactsRow = [self generateContactsRow]; contactsRow.frame = CGRectMake(10, tableMaxY, 300, 56); ... [scrollView addSubview:contactsRow]; [self.view addSubview:scrollView]; [滚动视图发布];在[self generateContactsRow]中,我基本上是创建一个容器视图,在里面加载一堆其他视图(按钮、标签等),然后返回。
UIView *containerView = [[[UIView alloc] initWithFrame:CGRectMake(0, 0, 300, 0)] autorelease]; ...(定义东西) // 设置它 [containerView addSubview:imageView]; [containerView addSubview:textLabel]; [containerView addSubview:detailTextLabel]; [containerView addSubview:addButton]; [容器视图添加子视图:小时]; // 然后忘记它 [imageView 发布]; [文本标签发布]; [detailTextLabel 发布]; [添加按钮释放]; [小时释放]; 返回容器视图;我正在自动释放 containerView 的事实导致我的应用程序崩溃。我返回了一个分配的对象,所以我想我必须以某种方式释放它,而自动释放似乎是最好的方法。如果我删除它,一切正常,但我不会有内存泄漏吗?
谢谢
【问题讨论】:
-
代码看起来正确。您是否打开了 NSZombieEnabled 标志以查看是否确实如此?
-
您发布的 sn-p 在内存管理方面是正确的。您如何初始化添加到 containerView 的对象?尝试运行静态分析器,看看它是否捕捉到任何东西。
-
使用 return [containerView autorelease];并从 UIView 初始化中移除 autorelease。
标签: iphone objective-c ios memory-management memory-leaks