Проблема доступа к переменной массива в Objective-C - PullRequest
1 голос
/ 29 января 2011

У меня есть проблема, которую я не могу понять даже после нескольких часов тестирования различных способов достижения того, что мне нужно: Вот код, с которым у меня проблема:

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 работает правильно, и я могу зациклить 10 элементовв self.rssParser.rssItems .Мне нужно получить доступ к этим элементам в другом представлении, чтобы показать их в таблице, поэтому я подготавливаю данные в NSMutableArray * newsRssArray , которые я объявил в своем файле .h

Однако, если я пытаюсьчтобы добавить эти 10 объектов в NSMutableArray * newsRssArray, у меня ничего нет в конце (см. вывод кода в отладчике).Я успешно тестирую свой код, если использую 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 ]

2 голосов
/ 29 января 2011

Просто взглянув на код, который вы предоставили, я не вижу, где вы инициализируете newsRssArray. Это в другом месте или вы забыли инициализировать?

0 голосов
/ 29 января 2011

Возможно, вы добавляете элементы в _newsRssArray вместо newsRssArray

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...