我正在学习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
答案 0 :(得分:1)
听起来您只需在-description
方法的一行上设置断点即可。调试器在断点处停止程序。没有迹象表明存在实际错误。
如果您点击Xcode中的继续按钮,您的程序可能会正常运行。
您可以禁用断点,告诉Xcode忽略所有断点,或者如果您不打算在那里断点,则删除断点。断点在代码左侧的边距中看起来像一个蓝色箭头。右键单击或按住Control键单击它以查看选项。
要使Xcode忽略断点,请在调试工具栏中切换断点按钮。它看起来像一个向右箭头。如果启用了断点,它将以蓝色填充。如果他们被禁用,那将是一个大纲。