iOS:在alloc和init之后返回* nil description *的对象

时间:2013-01-18 18:42:02

标签: ios objective-c

我先说这个问题,我认为这是我记忆管理上的错误。我似乎无法弄清楚它为什么会发生。

我有一个viewcontroller和一个名为Part的模型类。

#import <Foundation/Foundation.h>

@interface Part : NSObject

@property (nonatomic, strong) NSString *name;
@property (nonatomic, strong) NSString *partType;
@property (nonatomic, strong) NSString *description;
@property (nonatomic, strong) NSNumber *price;

- (id)initWithName:(NSString *)name AndType:(NSString *)type;

@end

在视图控制器中,我有一个属性设置如下:

@property (nonatomic, strong) Part *part;

init的{​​{1}}函数中,我创建了一些静态数组并从中创建了对象:

ViewController

我在该循环中调用的- (id)init { self = [super init]; self.partList = [[NSMutableArray alloc] init]; NSArray *inputArray = @[@"Part1", @"Part2", @"Part3", @"Part4", @"Part5", @"Part6", @"Part7", @"Part8"]; NSString *tempType = @"PartCategory"; // Add dummy static data for (int i = 0; i < [inputArray count]; i++) { Part *partInput = [[Part alloc] initWithName:[inputArray objectAtIndex:i] AndType:tempType]; //partInput.name = [inputArray objectAtIndex:i]; //partInput.partType = tempType; NSLog(@"Inserting Part %@", partInput); [self.partList addObject:partInput]; } return self; } 会为每个部分返回NSLog。我只是无法追踪到这里发生的事情。

编辑:以下是控制器使用的Inserting Part *nil description* initWithName方法:

Part

1 个答案:

答案 0 :(得分:7)

使用%@打印NSObject时,会调用debugDescription默认调用该对象的description方法,而Part对象始终为nil描述。

您最好通过将description属性名称更改为其他内容来解决此问题,因为它与description的{​​{1}}方法冲突。

另请参阅:NSObject description and debugDescription