0

我有一个名为FlightRecorderand的课程BookmarkTableViewController。现在,我介绍BookmarkTableViewController. 现在我正在解雇那个视图控制器。代码如下所示:

    [self dismissViewControllerAnimated:YES completion:^{

    FlightRecorder *fl = [[FlightRecorder alloc] init];
    [fl endBookmarkProcessWithBookmarkCollection: dict];

    }

这在选择表格视图单元格后被调用。因此,FlightRecorder有一个名为endBookmarkProcessWithBookmarkCollection:where you pass on an的方法NSDictionary,如下所示:

- (void)endBookmarkProcessWithBookmarkCollection: (NSDictionary *)dict {

NSString *compiledText = @"Random Airline";

NSString *string = [NSString stringWithFormat: @"\nMiles: %.2f\nFlight: %@\nDate: %@", [[dict objectForKey: @"miles"] floatValue], compiledText, [[NSUserDefaults standardUserDefaults] objectForKey:@"tempD"]];

self.bkBookmarkAlertView = [[UIAlertView alloc] initWithTitle:@"Confirmation" message:string delegate:self cancelButtonTitle:@"Cancel" otherButtonTitles:@"Add", nil];

[bkBookmarkAlertView show];

}

如您所见,我使用字典和其他一些变量来拼凑警报视图的消息!警报视图有两个按钮,取消和添加。但问题是,当您按下其中任何一个时,它们都会崩溃,并且clickedButtonAtIndex:不会调用委托方法。我没有在完全相同的视图控制器中使用任何其他警报视图的这种经验。

我查看了其他一些类似方式的问题,但他们的解决方案是使用 ARC。底线他们说,self警报视图的代表是 nil 或过度释放或类似的东西。所以我想,也许该方法在视图加载之前被调用,即使它是在明显完成时调用的(完成块在 中BookmarksTableViewController)。

所以我决定把NSLog'sviewDidLoad和' 都放进去endBookmarkProcessWithBookmarkCollection:,但是viewDidLoad 首先被调用,所以我不确定问题出在哪里。

谢谢你的帮助!

4

1 回答 1

1

该块已完成执行,并且 f1 已超出范围并在您点击按钮之前被释放。我不熟悉您的应用程序的架构,但您需要在等待点击时找到该对象的所有者。

于 2012-09-28T10:23:38.043 回答