释放指向 UIScrollView 的强指针 [关闭]
Posted
技术标签:
【中文标题】释放指向 UIScrollView 的强指针 [关闭]【英文标题】:Deallocating a strong pointer to a UIScrollView [closed] 【发布时间】:2015-02-10 08:13:09 【问题描述】:我有一个这样声明的属性:
@property (nonatomic, strong) UIScrollView *scroll;
然后我在 viewDidLoad:
// Create scrollview
_scroll = [[UIScrollView alloc] initWithFrame:CGRectMake(0.0, 0.0, 100.0, 100.0)];
// Function to add more view to _scroll
[self addStuff];
// This line makes things expensive on memory
[self.view addSubview:_scroll];
// Then if the above line is not commented out the view push lags
AViewController *aView = [[AViewController alloc] init];
[self.navigationController pushViewController:aView animated:YES];
如何保持强大以在我的其他功能上使用但防止推送滞后?
【问题讨论】:
你是什么意思滞后?从viewDidLoad
推送是个坏主意。视图没有完成正确的布局。你需要嵌入AViewController
?
同意。在viewDidAppear:
之前避免调用pushViewController:
。 viewDidLoad
太早了。你还没有出现在屏幕上。
【参考方案1】:
1.你需要优化你在里面做的事情
// Function to add more view to _scroll
[self addStuff];
2。如果您能负担得起显示加载状态的视图,请将您的代码移至
viewDidAppear:
【讨论】:
【参考方案2】:你应该直接使用属性而不是实例变量并调用自动释放
self.scroll = [[[UIScrollView alloc] initWithFrame:CGRectMake(0.0, 0.0, 100.0, 100.0)] autorelease];
始终尝试使用 alloc init autorelease。如果自动释放仍然不起作用,您可以简单设置
self.scroll = nil
这将释放上面创建的实例变量
【讨论】:
以上是关于释放指向 UIScrollView 的强指针 [关闭]的主要内容,如果未能解决你的问题,请参考以下文章