Objective-C中的数组变量访问问题

时间:2011-01-29 08:03:45

标签: iphone objective-c xcode ios

我遇到了一个问题,即使经过几个小时的测试后,我也无法弄清楚我需要的不同方法:以下是我遇到问题的代码:

AppDelegate.h

#import <Three20/Three20.h>

#import "NewsRssParser.h"
#import "NewsRss.h"

@class NewsRssParser;
@class NewsRss;

@interface AppDelegate : NSObject <UIApplicationDelegate,NewsRssParserDelegate> {
 NewsRssParser * _rssParser; 
 NSMutableArray * _newsRssArray;
}

@property(readwrite, retain) NewsRssParser * rssParser;
@property(readwrite, retain) NSMutableArray * newsRssArray;

@end

AppDelegate.m

@implementation AppDelegate

@synthesize rssParser = _rssParser;
@synthesize newsRssArray = _newsRssArray;

[...]

- (void)myFunction{

 NSMutableArray *dsItems = [[[NSMutableArray alloc] init] autorelease];

 for(NSMutableArray *rssItem in self.rssParser.rssItems)
 {
  NSString * rssItemTitle = [(NewsRss *)rssItem title];
  NSString * rssItemAuthor = [@"par " stringByAppendingString:[(NewsRss *)rssItem author]];
  NSString * rssItemDescription = [(NewsRss *)rssItem description];
  NSString * rssItemLinkUrl = [(NewsRss *)rssItem linkUrl];
  NSString * rssItemImageUrl = [(NewsRss *)rssItem mediaUrl];

  TTTableMessageItem *tMsgItem = [TTTableMessageItem itemWithTitle:rssItemTitle caption:rssItemAuthor text:rssItemDescription timestamp:nil imageURL:rssItemImageUrl URL:rssItemLinkUrl];
  [self.newsRssArray addObject:tMsgItem];
  [dsItems addObject:tMsgItem];
 }

 NSLog(@"AppDelegate/count/rssItems=%d", [self.rssParser.rssItems count]);
 NSLog(@"AppDelegate/count/newsRssArray=%d", [self.newsRssArray count]);
 NSLog(@"AppDelegate/count/dsItems=%d", [dsItems count]);

}

当我运行代码时,我的RSS解析器正常工作,我可以在 self.rssParser.rssItems 中循环10个项目。我需要在另一个视图中访问这些项目以在表格中显示它们,因此我在我在.h文件中声明的 NSMutableArray * newsRssArray 中准备数据

但是,如果我尝试在NSMutableArray * newsRssArray中添加这10个对象,我最终没有任何内容(请参阅调试器中的代码输出)。如果我在函数中使用 NSMutableArray * dsItems ,我会成功测试我的代码。

这是gdb输出:

Attaching to process 47209.
2011-01-29 14:55:24.813 TestApp[47209:207] AppDelegate/count/rssItems=10
2011-01-29 14:55:24.814 TestApp[47209:207] AppDelegate/count/newsRssArray=0
2011-01-29 14:55:24.815 TestApp[47209:207] AppDelegate/count/dsItems=10
(gdb) 

我做错了什么?

感谢您的帮助!

2 个答案:

答案 0 :(得分:2)

只是浏览一下你提供的代码,我看不到你在哪里初始化newsRssArray。这是在另一个地方还是你忘记了init?

答案 1 :(得分:0)

您可能正在将这些项目添加到_newsRssArray而不是newsRssArray