iphone - 调用方法[self somemethod]时如何解决错误

标签 iphone objective-c ios ipad

我有这个代码:

// .m
- (void)viewDidLoad {
    NSMutableArray *array = [[NSMutableArray alloc] init];
    [self addToArray];
}

- (void)addToArray {
    NSString *stringA;
    [stringA isEqualToString:@"door"];
    NSString *stringB;
    [stringB isEqualToString:textField.text];
    [array addObject:stringA];
    if ([stringA isEqual:stringB]) {
        [stringA isEqual:nil];
        [tableView reloadData];
    } else {
        [array addObject:stringB];
        [tableView reloadData];
    }
}

当我调用方法addToArray时,它会不断向我返回一个名为Thread 1: Program recived signal "EXC_BAD_ACCESS"的错误,调试器的输出显示为:Single stepping until exit from function objc_msgSend, which has no line number information.行的[self addToArray]。关于如何解决的任何想法?我已经浪费了很多时间,请帮帮我!

最佳答案

正如其他人所说,array应该是在.h文件中声明的实例变量或类的属性:

@property (strong) NSMutableArray *array;

或者,没有ARC:
@property (retain) NSMutableArray *array;

现在,您在实现文件中添加了@synthesize array;,可以从任何地方访问它。然后,您可以执行以下操作:
- (void) viewDidLoad 
{
    self.array = [[NSMutableArray alloc] init];
    [self addToArray];
}

您似乎假设isEqualToString进行了分配。不会,它会检查字符串(文本)是否相等。尝试这个:
- (void) addToArray
{
    NSString *stringA = @"door";
    NSString *stringB = textField.text;
    [array addObject: stringA];
    if (![stringA isEqualToString: stringB])
        [array addObject: stringB];
    [tableView reloadData];
}

关于iphone - 调用方法[self somemethod]时如何解决错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9240262/

相关文章:

ios - 检测 UIButton iOS 的选定状态

ios - XCode 7调试区工具栏区别

ios - 如何检查当前用户之前是否登录过

iphone - 如何在ios中以单一 View 显示饼图、条形图和折线图

Iphone Ipad QA 测试流程

iphone - 当我运行 iPhone 模拟器时,PickView 不可见

ios - 像这样子类化 NSDictionary : @implementation NSDictionary (weather)

iphone - 如何使用 Objective C 获取 iPhone 中的 GPS 坐标

iphone - 如何动态调整 UITableView 高度?

iPhone 录制的视频上有水印。