首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >单独类崩溃应用程序中的UIAlertViewDelegate

单独类崩溃应用程序中的UIAlertViewDelegate
EN

Stack Overflow用户
提问于 2012-10-10 10:18:37
回答 1查看 697关注 0票数 3

除了UIAlertView之外,我在课堂上遇到了ViewController委托的困难。一切都很好,直到用户单击OK按钮-然后应用程序崩溃

代码语言:javascript
复制
Thread 1: EXC_BAD_ACCESS (code=2, address 0x8)

ViewController.h:

代码语言:javascript
复制
#import <UIKit/UIKit.h>
#import "DataModel.h"

@interface ViewController : UIViewController
@end

ViewController.m:

代码语言:javascript
复制
#import "ViewController.h"

@interface ViewController ()
@end

@implementation ViewController
- (void)viewDidLoad
{
    DataModel *dataModel = [[DataModel alloc] init];
    [dataModel ShowMeAlert];

    [super viewDidLoad];
}
@end

DataModel.h

代码语言:javascript
复制
#import <Foundation/Foundation.h>

@interface DataModel : NSObject <UIAlertViewDelegate>
- (void)ShowMeAlert;
@end

DataModel.m

代码语言:javascript
复制
#import "DataModel.h"

@implementation DataModel
- (void)ShowMeAlert;
{
    UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Info" message:@"View did load!" delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil];
    [alert show];
}

#pragma mark - UIAlertView protocol

- (void)alertView:(UIAlertView *)alertView didDismissWithButtonIndex:(NSInteger)buttonIndex
{
    NSLog(@"Index: %d", buttonIndex);
}

@end
  • 如果显示警报的代码和它的委托方法是在ViewController中的,那么工作得很好。
  • 当我移除UIAlertDelegation方法时,...didDismissWithButtonIndex... -在没有委托的情况下工作。
  • 当我将UIAlertView delegate设置为nil时--在没有委托的情况下工作。

有什么线索吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-10-10 10:23:57

在这种方法中:

代码语言:javascript
复制
- (void)viewDidLoad
{
  DataModel *dataModel = [[DataModel alloc] init];
  [dataModel ShowMeAlert];

  [super viewDidLoad];
}

您正在分配一个DataModel局部变量,该局部变量将在作用域结束时由ARC解除分配。因此,当执行解散时,您的委托就不再存在了。修复方法是将DataModel存储在视图控制器的strong属性中。这样,它就不会被取消。你要做的是:

代码语言:javascript
复制
- (void)viewDidLoad
{
  self.dataModel = [[DataModel alloc] init];
  [self.dataModel ShowMeAlert];

  [super viewDidLoad];
}
票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12817033

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档