ios - 发送到已释放实例的消息 - 视为属性

标签 ios objective-c cocoa-touch memory-management automatic-ref-counting

在我的应用程序中,您单击一个显示另一个页面的按钮。每当您单击 View 上的按钮时,它都会崩溃并显示:

imege
IBAction在按钮上:

- (IBAction)searchOptions:(id)sender {
    FilterViewController *ctrl = [[FilterViewController alloc] init];
    [UIView transitionFromView:self.view toView:ctrl.view duration:1 options:UIViewAnimationOptionTransitionCurlUp completion:nil];

    [self.navigationController pushViewController:ctrl animated:NO];
}

在 .h 文件中,我有一个前向类声明并设置属性:
#import "FilterViewController.h"
@class FilterViewController;
@property (strong) FilterViewController *filterViewController;

我不确定这里发生了什么!

最佳答案

假设您使用 ARC,您的 ctrl实例永远不会保留,因此它会被释放和释放。您需要保持对该对象的强引用。

也许分配 ctrlfilterViewController属性(property)是你打算做的。

- (IBAction)searchOptions:(id)sender {
    FilterViewController *ctrl = [[FilterViewController alloc] init];
    [UIView transitionFromView:self.view toView:ctrl.view duration:1 options:UIViewAnimationOptionTransitionCurlUp completion:nil];

    self.filterViewController = ctrl;

    [self.navigationController pushViewController:ctrl animated:NO];
}

更新 :

没关系。我完全错过了你推 ctrl 的最后一行到 nab Controller 上。鉴于此,我最初的答案根本不正确。

关于ios - 发送到已释放实例的消息 - 视为属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16107183/

相关文章:

objective-c - 无法在 uicollectionview、UICollectionView 的特定 indexPath.row 处设置单元格标题

ios - CALayer - 从 View 中移除

objective-c - 路径上的 ShapeLayer HitTest 对我不起作用

iphone - iOS SDK 问题 : how do I cast a UIView to a UIImage View (alternativly how do I get a UIImageView from a GestureRecognzer? )

ios - objective-c: ScrollView 滚动到左右方向

ios - 如何在 iOS 中自定义 UISearchbar?

ios - Parse.com 一对多问题。是否可以在一次查询中获取所有内容?

iphone - 有没有办法暂停核心动画并在稍后恢复它?

ios - iOS 上的 Instapaper 如何嵌入 YouTube 视频?

iphone - NSString 真的是不可变的吗?