块初始化的ViewController很早就发布了

时间:2014-01-24 16:48:29

标签: ios objective-c uiviewcontroller objective-c-blocks

我在一个块中正在初始化SubViewController。我将视图控制器的视图作为子视图添加到我的MainViewcontroller中。我的SubViewController里面有一些按钮逻辑。 现在发生了什么,当我按下子视图中的按钮时,应用程序崩溃,因为SubViewController已经发布。

我担心这是一个主要的设计问题 - 但目前我还没有任何线索如何避免这种情况。

这是初始化在我的块语句中的显示方式

__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

1 个答案:

答案 0 :(得分:1)

您应该将API用于容器视图控制器。这些都包含在UIViewController的文档中。

代码的问题是,AAFBPostView变量超出范围后,newPost视图控制器没有强引用。顺便说一句 - 您的视图控制器的类名应为AAFBPostViewController。当前名称表示它是视图,而不是视图控制器。

通过使用容器API,父视图控制器保持对子视图控制器的引用,以便解决问题。

详细信息可以在“适用于iOS的View Controller编程指南”的Creating Custom Content View Controllers部分找到。