我已经做了一番调查,但没有找到我问题的答案,所以我希望有人能给我指一个正确的方向
我对objective c还不太熟悉,在执行一些我认为很简单的事情时遇到了一个小问题;从类方法返回一系列对象
我有以下类和关联的类方法
@implementation Sale
@synthesize title = _title;
@synthesize description = _description;
@synthesize date = _date;
+(NSArray*)liveSales
{
NSArray *liveSales = [[NSArray alloc] init];
for(int i = 0; i < 100; i++)
{
Sale *s = [[Sale alloc] init];
[s setTitle:[NSString stringWithFormat:@"Sale %d", i+1]];
[s setDescription:[NSString stringWithFormat:@"Sale %d descriptive text", i+1]];
[liveSales addObject:s];
[s release];
s = nil;
}
return [liveSales autorelease];
}
@end
并且我有一个VIEW控制器,带有下面的代码(修剪以便于阅读):
@implementation RootViewController
@synthesize saleList = _saleList;
- (void)viewDidLoad {
[super viewDidLoad];
// Uncomment the following line to display an Edit button in the navigation bar for this view controller.
// self.navigationItem.rightBarButtonItem = self.editButtonItem;
[[self saleList] setArray:[Sale liveSales]];
}
我遇到的问题是saleList的计数始终为空,因此似乎没有设置数组。如果我调试代码并进入类方法livesales,那么在返回点数组中的对象数是正确的
有人能指点我正确的方向吗?
谢谢:)
戴夫
最佳答案
可能是因为saleList
开始时是nil
。在objective-c中向nil
发送消息(在大多数情况下)没有任何作用。
请改为:
self.saleList = [Sale liveSales];
(假设属性被声明为保留)。