0

我的 NSMutableArray 充满了 Article(一个包含 NSString * 标题的自定义类)对象在一个方法中正确加载(在调试器中检查),但是当另一个方法被调用时,Article 对象似乎“忘记”了一些类变量(比如标题变量)。

下面是将 Article 对象加载到 NSMutableArray 中的代码:

for(int i=0;i<[articleURLs count];i++) {
    Article * a = [[Article alloc] init];
    [a initWithWebsite:[articleURLs objectAtIndex:i]];
    if([sectionTitle isEqualToString:@"Features"]) [featuresArticles addObject:a];
    if([sectionTitle isEqualToString:@"News"]) [newsArticles addObject:a];
    if([sectionTitle isEqualToString:@"Sports"]) [sportsArticles addObject:a];
    if([sectionTitle isEqualToString:@"Leisure"]) [leisureArticles addObject:a];
    if([sectionTitle isEqualToString:@"Voices"]) [voicesArticles addObject:a];
    if([sectionTitle isEqualToString:@"Editorial"]) [editorialArticles addObject:a];
    if([sectionTitle isEqualToString:@"Page 13"]) [page13Articles addObject:a];
    [a release];
}

这是另一种查找这些值的方法中的代码:

NSString *cellValue = @"ddd";
//NSArray * tempArray;
Article * a;
if([sectionTitle isEqualToString:@"Features"]) a = [featuresArticles objectAtIndex:indexPath.row];
if([sectionTitle isEqualToString:@"News"]) a = [newsArticles objectAtIndex:indexPath.row];
if([sectionTitle isEqualToString:@"Sports"]) a = [sportsArticles objectAtIndex:indexPath.row];
if([sectionTitle isEqualToString:@"Leisure"]) a = [leisureArticles objectAtIndex:indexPath.row];
if([sectionTitle isEqualToString:@"Voices"]) a = [voicesArticles objectAtIndex:indexPath.row];
if([sectionTitle isEqualToString:@"Editorial"]) a = [editorialArticles objectAtIndex:indexPath.row];
if([sectionTitle isEqualToString:@"Page 13"]) a = [page13Articles objectAtIndex:indexPath.row];

cellValue = [a getTitle];

我已经被困在这个问题上超过 24 小时了,互联网也没有帮助。有什么建议么?

4

2 回答 2

0

您的属性可能未在您的类的接口中正确声明。它应该类似于:

@interface Article : NSObject
{
}

@property (nonatomic,copy) NSString *title;

@end

copy最适合字符串属性,因为如果您使用可变字符串设置属性,那么您的类将制作字符串的不可变副本。如果您只是简单地retain这样做,那么可变字符串可能会在您的班级不知道的情况下发生变化。

于 2012-03-27T20:50:26.577 回答
0

在自定义类(Article)中,我需要[title retain];在类Article.m文件中完成设置后编写。

于 2012-03-28T04:35:00.907 回答