目标C中的新内容。运行时的简单错误。线程1:断点1.1

时间:2015-08-31 01:00:21

标签: objective-c xcode method-overriding

我正在学习Objective C,并且我试图在我的BNRItem类中覆盖我的超类(NSObject)描述方法。虽然看起来我已经做好了一切,但我的NSLog似乎并没有使用我的重写描述方法。相反,我在描述方法的定义中看到了一个Thread 1 Breakpoint 1.1,更确切地说,我定义了descriptionString。

这是我的控制台输出。

2015-08-30 20:49:00.622 RandomItems[46034:1002101] Zero
2015-08-30 20:49:00.623 RandomItems[46034:1002101] One
2015-08-30 20:49:00.623 RandomItems[46034:1002101] Two
2015-08-30 20:49:00.623 RandomItems[46034:1002101] Three
(lldb) 

我的main.m文件:

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

int main(int argc, const char * argv[]) {
@autoreleasepool {
    // Create a mutable array object, store its address in items variable...
    NSMutableArray *items = [[NSMutableArray alloc] init];

    //Send the message addObject: to the NSMutableArray pointed
    //by the variable item, passing a string each time
    [items addObject:@"One"];
    [items addObject: @"Two"];
    [items addObject: @"Three"];


    // Send another message, insertObject:atIndex;, to that same array object
    [items insertObject:@"Zero" atIndex:0];




    // For every item in the items array ...
    for (NSString *item in items){
        //Log the description of item
        NSLog(@"%@", item);

    }
    // Create a BNRItem instance and log its instance variables in the console

    BNRItem *item = [[BNRItem alloc] init];

    // Set item name to Red Sofa

    item.itemName = @"Red Sofa";
    item.serialNumber= @"A1B2C";
    item.valueInDollards = 100;

    // 
    NSLog(@"%@", item);



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

我的标题文件:

#import <Foundation/Foundation.h>

@interface BNRItem : NSObject

 {
NSString *_itemName;
NSString *_serialNumber;
int _valueInDollards;
NSDate *_dateCreated;
 }

- (void)setItemName:(NSString *)str;
- (NSString *)itemName;

- (void)setSerialNumber:(NSString *)str;
- (NSString *)serialNumber;

- (void)setValueInDollards:(int)v;
- (int)valueInDollards;

- (NSDate *)dateCreated;


@end

最后,我的实施文件:

 #import "BNRItem.h"

 @implementation BNRItem


- (void)setItemName:(NSString *)str
 {
_itemName = str;
 }


 - (NSString *)itemName
 {
 return _itemName;
 }



- (void)setSerialNumber:(NSString *)str
{
_serialNumber = str;

}
- (NSString *)serialNumber
{
return _serialNumber;
}



- ( void )setValueInDollards:(int)v
{
_valueInDollards = v;

}
- ( int )valueInDollards
{
return _valueInDollards;
}




-( NSDate * )dateCreated
{
return _dateCreated;
}

- ( NSString * )description
{
NSString *descriptionString = [[NSString alloc] initWithFormat:@"%@ (%@): Worth %d, recorded on %@", self.itemName, self.serialNumber,     self.valueInDollards, self.dateCreated];
return descriptionString;
}


@end

1 个答案:

答案 0 :(得分:1)

听起来您只需在-description方法的一行上设置断点即可。调试器在断点处停止程序。没有迹象表明存在实际错误。

如果您点击Xcode中的继续按钮,您的程序可能会正常运行。

您可以禁用断点,告诉Xcode忽略所有断点,或者如果您不打算在那里断点,则删除断点。断点在代码左侧的边距中看起来像一个蓝色箭头。右键单击或按住Control键单击它以查看选项。

要使Xcode忽略断点,请在调试工具栏中切换断点按钮。它看起来像一个向右箭头。如果启用了断点,它将以蓝色填充。如果他们被禁用,那将是一个大纲。