Iphone 当从UIViewController文件移动到单独的类文件时,UIActionSheet代码崩溃

Iphone 当从UIViewController文件移动到单独的类文件时,UIActionSheet代码崩溃,iphone,ios,Iphone,Ios,我已经搜索了一个又一个董事会,但无法找到答案。它必须是简单的,就在我面前 我正在尝试清理我的代码,使其更具可重用性。我从UIViewController获取了一些UIActionSheet代码,并创建了自己的对象文件。在我添加UIActionSheetDelegate方法之前,工作正常 当按下按钮时,它不会触发actionSheetCancel方法,而是在没有堆栈跟踪的情况下崩溃。每一次 我的代码如下。任何帮助都将不胜感激。我的猜测是,这是因为我没有使用xcode情节串连板工具将事物连接在一起,

我已经搜索了一个又一个董事会,但无法找到答案。它必须是简单的,就在我面前

我正在尝试清理我的代码,使其更具可重用性。我从UIViewController获取了一些UIActionSheet代码,并创建了自己的对象文件。在我添加UIActionSheetDelegate方法之前,工作正常

当按下按钮时,它不会触发actionSheetCancel方法,而是在没有堆栈跟踪的情况下崩溃。每一次

我的代码如下。任何帮助都将不胜感激。我的猜测是,这是因为我没有使用xcode情节串连板工具将事物连接在一起,但我认为这是合法的

egcTestSheet.h:

#import <UIKit/UIKit.h>

@interface egcTestSheet : NSObject <UIActionSheetDelegate> {

}

- (void) showSheet:(UITabBar *) tabBar
    displayTitle:(NSString *) name;

@end
从UIViewController对象调用代码:

egcTestSheet *sheet = [[egcTestSheet alloc] init];

[sheet showSheet:self.tabBarController.tabBar displayTitle:@"new test"];

您的行动表可能会在被驳回时被发布(您是否正在使用ARC?)。这意味着,当它试图打电话给其代表,通知该代表其解雇/选择时,它正在尝试打电话给self。Self此时是一个悬而未决的指针,因为它已被释放


在显示/调用此操作表的视图控制器中,设置属性以保留对操作表的引用。撤销操作表时,将属性设置为nil。

您击中了它的头部。将创建移动到@属性(强,非原子),问题就消失了。这显然超出了范围。谢谢谢谢你的回答。虽然从上面的回答和评论中可以清楚地看到,如果其他人遇到这种情况,我想我应该澄清一下,您需要创建的@property(strong,nonatomic)是用于您正在创建的自定义类对象,而不是用于您在类内部使用的UIActionSheet对象。
egcTestSheet *sheet = [[egcTestSheet alloc] init];

[sheet showSheet:self.tabBarController.tabBar displayTitle:@"new test"];