Objective C 中的新内容。运行时的简单错误。线程1:断点1.1
New in Objective C. Simple bug at runtime. Thread 1: breakpoint 1.1
我正在学习 Objective C 并且我试图在我的 BNRItem class 中覆盖我的 superclass (NSObject) 描述方法。虽然看起来我做的一切都是对的,但我的 NSLog 似乎没有使用我重写的描述方法。相反,我在 description 方法的定义中看到了 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
听起来您只是在 -description
方法的一行上设置了一个断点。调试器正在断点处停止您的程序。没有实际错误的迹象。
如果您在 Xcode 中点击继续按钮,您的程序可能会继续正常运行。
您可以禁用断点,告诉 Xcode 忽略所有断点,或者如果不想在此处中断则删除断点。断点看起来像代码左侧空白处的蓝色箭头。右键单击或按住 Control 单击它以查看选项。
要使 Xcode 忽略断点,请切换调试工具栏中的断点按钮。它看起来也像一个右向箭头。如果启用断点,它将填充为蓝色。如果它们被禁用,它将是一个大纲。
我正在学习 Objective C 并且我试图在我的 BNRItem class 中覆盖我的 superclass (NSObject) 描述方法。虽然看起来我做的一切都是对的,但我的 NSLog 似乎没有使用我重写的描述方法。相反,我在 description 方法的定义中看到了 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
听起来您只是在 -description
方法的一行上设置了一个断点。调试器正在断点处停止您的程序。没有实际错误的迹象。
如果您在 Xcode 中点击继续按钮,您的程序可能会继续正常运行。
您可以禁用断点,告诉 Xcode 忽略所有断点,或者如果不想在此处中断则删除断点。断点看起来像代码左侧空白处的蓝色箭头。右键单击或按住 Control 单击它以查看选项。
要使 Xcode 忽略断点,请切换调试工具栏中的断点按钮。它看起来也像一个右向箭头。如果启用断点,它将填充为蓝色。如果它们被禁用,它将是一个大纲。