我有一个帮助类,我想要显示一个UIAlertView,然后执行一些web服务操作。我想这样做,这样我就可以在其他地方重复使用警报视图。
我是这样宣布的:
@interface FBLinkHelper : NSObject <UIAlertViewDelegate>我还有一个显示警报视图的方法:
- (void) showLinkDialog {
UIAlertView *av = [[UIAlertView alloc] initWithTitle:@"Link account with Facebook?" message:@"Linking your account with Facebook extends your user experience. Link account?" delegate:self cancelButtonTitle:@"No" otherButtonTitles:@"Yes", nil];
[av show];
}下面是我展示对话框的方式:
FBLinkHelper *fbLinkHelper = [[FBLinkHelper alloc] init];
[fbLinkHelper showLinkDialog];我觉得一切都很正常。它显示了警报视图对话框,但是当我单击一个按钮(无论是哪一个)时,我的应用程序就会崩溃,在控制台中没有什么可说的。我注意到只有当UIAlertViewDelegate方法(如didDismissWithButtonIndex )就位时,它才会崩溃。为什么会发生这种情况?
发布于 2012-06-18 16:38:15
-最新情况-
FBLinker实例不是其调用方的强属性,因此委托回调转到了一个悬空指针。关于FBLinker strong的OP报告解决了问题。
让类从UIView而不是NSObject扩展的最初建议没有任何效果,这里只为历史目的引用。
发布于 2012-06-25 16:43:36
在我工作的应用程序中,我也有过同样的情况。如果委托对象不是强属性(或者在5.0之前的iOS中保留)属性,那么它可能会在显示UIAlertView之后立即被解除分配。
https://stackoverflow.com/questions/11087179
复制相似问题