一个简单的代码,不知道如何调试

时间:2015-10-24 14:26:53

标签: ios objective-c xcode

在我的BNRItem.m中,我实现了一个类方法:

#import "BNRItem.h"

@implementation BNRItem

+ (instancetype) randomItem {

    // Create an immutable array of three adjectives
    NSArray *randomAdjectiveList = @[@"Fluffy", @"Rusty", @"Shiny"];

    //three nouns
    NSArray *randomNounList = @[@"Bear", @"Spork", @"Mac"];

    //random number for 0 to 2
    //NOTE: NSInteger is not an object, but a type definition for "long"
    NSInteger adjectiveIndex = arc4random() % [randomAdjectiveList count];
    NSInteger nounIndex = arc4random() % [randomNounList count];

    NSString *randomName = [NSString stringWithFormat:@"%@ %@",
                            randomAdjectiveList[adjectiveIndex],
                            randomNounList[nounIndex]];

    int randomValue = arc4random() % 100;

    NSString *randomSerialNumber = [NSString stringWithFormat:@"%c%c%c%c%c",
                                    '0' + arc4random() % 10,
                                    'A' + arc4random() % 26,
                                    '0' + arc4random() % 10,
                                    'A' + arc4random() % 26,
                                    '0' + arc4random() % 10];


    BNRItem *newItem = [[self alloc] initWithItenName:randomName
                                          valueInDollars:randomValue
                                            serialNumber:randomSerialNumber];

    return newItem;

}

@end

在main.m中,我尝试调用类方法来创建BNRItem的新实例:

#import <Foundation/Foundation.h>
#import "BNRItem.h"

int main(int argc, const char * argv[]) {
    @autoreleasepool {
        NSMutableArray *items = [[NSMutableArray alloc] init];

        for (int i = 0; i < 10; i++) {
            //Thread 1: breakpoint 1.1
            BNRItem *item = [BNRItem randomItem];
            [items addObject:item];
        }

        for (BNRItem *item in items) {
            NSLog(@"%@", item);
        }

        //destroy the mutable array object
        items = nil;
    }
    return 0;
}

但是,当我运行我的应用程序时,我最终得到了以下的东西,我不明白如何调试,没有错误消息,它只是在代码中显示断点:

enter image description here

那么,我的代码中有什么问题?我怎样才能调试这种情况?我的意思是,我不仅在寻找如何使我当前的代码运行,而且还想知道如何调试这种情况?因为控制台没有详​​细说明代码中的错误信息。

2 个答案:

答案 0 :(得分:0)

您的应用程序在breakpoint开启的情况下正在运行。您只需单击蓝色符号(如下图所示)并再次运行。那个符号应该变成白色。你应该好好去!

enter image description here

答案 1 :(得分:0)

正如其他人所说,你在代码中遇到了断点。屏幕截图中第17行的蓝色箭头是一个断点,并且旁边有刻度线,右边缘有文字,表示&#34;线程1:断点...&#34;告诉你,你已经达到了断点。

这是一个非常有用的调试工具。你应该学习如何使用它。单击另一行上的相同位置会在该行添加断点。运行程序时,如果执行了该行代码,调试器会在行运行之前停止执行,并向您显示变量的当前值,您需要查看的内容(刚刚更改的变量以及局部变量。)

如果你抓住一个蓝色断点并拖走它,它会删除它。如果单击它,它将在活动和禁用之间切换。

还有一个调试器命令行,允许您输入调试器命令以显示变量的值(甚至执行代码。)

现在,只需拖动断点即可将其删除,但请花时间学习如何使用断点和调试器的其他功能。实际上,这是IDE最强大的功能之一,如果您要作为开发人员进入初级阶段,您必须学会如何做。