我先说这个问题,我认为这是我记忆管理上的错误。我似乎无法弄清楚它为什么会发生。
我有一个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
答案 0 :(得分:7)
使用%@
打印NSObject时,会调用debugDescription
默认调用该对象的description
方法,而Part
对象始终为nil
描述。
您最好通过将description
属性名称更改为其他内容来解决此问题,因为它与description
的{{1}}方法冲突。