我正在一个 block 中初始化一个 SubViewController。我将 View Controller 的 View 作为 subview 添加到我的 MainViewcontroller。我的 SubViewController 中有一些按钮逻辑。 现在,当我按下 subview 中的按钮时,应用程序崩溃了,因为 SubViewController 已经被释放了。
恐怕这是一个主要的设计问题 - 但目前我不知道如何避免这种情况。
这是初始化在我的 block 语句中的样子
__strong AAFBPostView *newPost = [[AAFBPostView alloc]init];
newPost.view.frame = CGRectMake(0, 300, 320, 88);
[self.view addSubview:newPost.view];
[newPost setData:result]; //passing some data to the view
最佳答案
您应该使用容器 View Controller 的 API。 UIViewController
的文档中对此进行了全部介绍。
代码的问题是,一旦 newPost
变量超出范围,就没有对 AAFBPostView
View Controller 的强引用。顺便说一句 - 你的 View Controller 的类名应该是 AAFBPostViewController 。当前的名称意味着它是一个 View ,而不是 View Controller 。
通过使用容器 API,父 View Controller 保留对 subview Controller 的引用,从而解决了问题。
详情可见Creating Custom Content View Controllers “iOS View Controller 编程指南”部分。
关于ios - block 初始化的 ViewController 提前释放,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21338023/