如何覆盖对象的描述方法并将其打印出来?

时间:2013-09-29 21:50:14

标签: objective-c nslog nsobject

我需要覆盖description方法以返回对象的内部状态(换句话说,将所有值转储到单行文本中)。

在我的模特(班级)中我有

Homework.h

#import <Foundation/Foundation.h>

@interface Homework : NSObject

@property (nonatomic, strong) NSString *className;
@property (nonatomic, strong) NSString *assignmentTitle;

@end

Homework.m

-(NSString *)description
{
return [NSString stringWithFormat:@" %@, %@", self.className, self.assignmentTitle];
}

我在ViewController

中创建了一个对象
@property (nonatomic, strong) Homework *homeworkAssignment;

我尝试像这样打印

  NSLog(self.homeworkAssignment.description);

但它似乎不起作用,输出打印出逗号“,”。我格式化NSLog错了吗?我是否正确覆盖了该方法?这是我的第一个应用程序(除了“Hello World”)。

2 个答案:

答案 0 :(得分:1)

你的代码工作正常,你甚至可以像这样使用NSLog:

NSLog(@"%@", self.homeworkAssignment);

返回

2013-09-29 23:56:50.375 test[2769:a0b] (null), (null)

尝试为className和assignmentTitle赋值,因此它不会返回null:)

答案 1 :(得分:0)

关于description和日志记录的实现,代码都显示正确。由于输出仅显示逗号,因此表示您的两个属性都包含空字符串。如果它们是nil,则字符串格式会将其显示为(null)

nil指针与对空字符串(@"")的引用之间存在差异。