释放指向 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 的强指针 [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

探索android系统中的强指针实现

探索android系统中的强指针实现

解析IOS对象指针和基础数据类型的强转

为啥在释放指向它的指针后仍然可以访问结构的成员?

指针free后还存在吗?

在ansi c中释放指向全局指针数组的本地指针