2010-10-16 2 views
0

Эй, ребята, у меня возникли проблемы с добавлением NSURL к массиву и прокруткой через них. Вот соответствующие части моего кода:NSMutableArray initWithObjects Not Working

RSS_ReaderAppDelegate.h:

@interface RSS_ReaderAppDelegate : NSObject <UIApplicationDelegate> { 

    UIWindow *window; 
    UINavigationController *navigationController; 

    NSDictionary *RSSFeeds; 
    NSMutableArray *RSSFeedURLs; 
} 

@property (nonatomic, retain) IBOutlet UIWindow *window; 
@property (nonatomic, retain) IBOutlet UINavigationController *navigationController; 

@property (nonatomic, retain) NSDictionary *RSSFeeds; 
@property (nonatomic, retain) NSMutableArray *RSSFeedURLs; 

RSS_ReaderAppDelegate.m:

@implementation RSS_ReaderAppDelegate 

@synthesize window; 
@synthesize navigationController; 

@synthesize RSSFeeds, RSSFeedURLs; 


#pragma mark - 
#pragma mark Application lifecycle 

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {  

    // Override point for customization after application launch. 

    NSURL *url1 = [[NSURL alloc] initWithString:@"http://<some url>"]; //real URL has been hidden 
    NSURL *url2 = [[NSURL alloc] initWithString:@"http://<some other url>"]; //real URL has been hidden 

    [RSSFeedURLs initWithObjects: url1, url2, nil]; 

    [url1 release]; 
    [url2 release]; 

    for (NSURL *url in RSSFeedURLs) { //jumps right over this for loop 
     NSXMLParser *xmlParser = [[NSXMLParser alloc] initWithContentsOfURL:url]; 
     XMLParser *parser = [[XMLParser alloc] init]; 
     [xmlParser setDelegate:parser]; 
     //Start parsing the XML file. 
     BOOL success = [xmlParser parse]; 

     if(success) 
      NSLog(@"No Errors"); 
     else 
      NSLog(@"Error(s) encountered"); 
    }//for 
    // Add the navigation controller's view to the window and display. 
    [window addSubview:navigationController.view]; 
    [window makeKeyAndVisible]; 

    return YES; 
} 

Так [RSSFeedURLs initWithObjects: url1, url2, nil];, кажется, не делает ничего, как, когда я бегу отладчика и введите «po RSSFeedsURLs», он сообщает: «Не удается получить доступ к памяти по адресу 0x0», и поэтому цикл for никогда не вводится. Я понятия не имею, почему это так, может ли кто-нибудь пролить свет на эту ситуацию для меня? Заранее спасибо.

ответ

2

вы хотите:

RSSFeedURLs = [[NSMutableArray alloc] initWithObjects: url1, url2, nil]; 

но вы должны хотеть:

rssFeedURLs = [[NSMutableArray alloc] initWithObjects: url1, url2, nil]; 

Переменные, начинающиеся с заглавных букв приведет к путанице.

+0

Глупо меня! Не могу поверить, что я этого не видел! И да, вы правы в отношении соглашения об именах переменных, спасибо за то, что указали это тоже. :) – Stunner

+0

Согласно правилам именования кода Apple для Cocoa: «Для имен методов начинайте с буквы нижнего регистра и заглавные буквы первой буквы встроенных слов. Не используйте префиксы. ** Исключением из этого руководства являются имена методов, которые начинаются с известный аббревиатура, например, TIFFRepresentation (NSImage) **. Либо это, либо заклинание: richSiteSummaryFeedURL или, скорее ,SimpleSyndicationFeedURL, но я думаю, что RSS хорошо известен, чтобы использовать его как есть. – zrxq