Thread1: Программа получила сигнал: SIGBRT

Проект строится нормально, но как только приложение пытается запустить, оно вылетает с этим:

Это (ошибка) было показано так.

#import <UIKit/UIKit.h>
#import "AppDelegate.h"

int main(int argc, char *argv[])
{
    @autoreleasepool {
        return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));
                    // here i got Thread1: Program received signal: "SIGBRT" 
    }
}

Мой код:

(i)

(Я объявил экземпляр сборщика и импортировал collection.h)

#import <UIKit/UIKit.h>
#import "Collector.h"

@interface ViewController : UIViewController{
    Collector *model;
    IBOutlet UILabel *totalStrings;
    IBOutlet UILabel *totalNumbers;
}

-(void)collect:(UIButton *)sender;

@end

(ii)

#import "ViewController.h"
#import "Collector.h"

@implementation ViewController

-(void)updateUI
{
    totalNumbers.text = [NSString stringWithFormat:@"%d",model.totalNumberCount];
    totalStrings.text = [NSString stringWithFormat:@"%d",model.totalStringCount];
}

-(IBAction)collect:(UIButton *)sender
{
    if(!model) model = [[Collector alloc] init];
    double doubleValue = [sender.titleLabel.text doubleValue];
    if (doubleValue) {
        [model collect:[NSNumber numberWithDouble:doubleValue]];
    } else{
        [model collect:sender.titleLabel.text];
    }
    [self updateUI];
}

@end

(iii)

#import <Foundation/Foundation.h>

@interface Collector : NSObject{
    NSMutableDictionary *counts;

}
-(void)collect:(id)anObject;
@property (readonly) int totalStringCount;
@property (readonly) int totalNumberCount;

@end

(iv)

#import "Collector.h"

@interface Collector()

@property (readonly) NSMutableDictionary *counts;
@end

@implementation Collector

-(NSMutableDictionary *)counts
{
    if (!counts) {
        counts = [[NSMutableDictionary alloc] init];
    }
    return counts; 
}

-(void)collect:(id)anObject
{
    if ([anObject isKindOfClass:[NSString class]] || [anObject isKindOfClass:[NSNumber class]] ) {
        NSNumber *existingCount = [self.counts objectForKey:anObject];
        [self.counts setObject:[NSNumber numberWithInt: [existingCount intValue] + 1] forKey:anObject];

    }
}

- (int) totalStringCount
{
    int total = 0;
    for (id key in self.counts) {
        if ([key isKindOfClass:[NSString class]]) {
            total +=[[self.counts objectForKey:key] intValue];
        }
    }
    return total;
}

-(int)totalNumberCount
{
    int total = 0;
    for (id key in self.counts) {
        if ([key isKindOfClass:[NSNumber class]]) {
            total +=[[self.counts objectForKey:key] intValue];
        }
    }
    return total;
}

@end

Как вы думаете, что вызывает эту проблему?


person Prasad G    schedule 16.12.2011    source источник
comment
попробуйте отладить свой код и найти точную строку, где вы получаете сбой   -  person Leena    schedule 16.12.2011
comment
используйте точки останова и NSLog(s) и проверьте, после какого именно приложения происходит сбой.   -  person Saurabh Passolia    schedule 16.12.2011
comment
Включите трассировку стека, пожалуйста.   -  person Hyperbole    schedule 16.12.2011


Ответы (1)


Проверьте этот пост, как установить NSZombieEnabled. Это покажет более подробную информацию о сбоях, которая должна помочь вам отладить вашу проблему:

Сбой приложения только на устройстве iPhone, а не в Симуляторе

person Niko    schedule 16.12.2011
comment
Большое спасибо. Мне помогло. - person Prasad G; 21.12.2011