Инициализация пользовательских объектов внутри делегата - PullRequest
0 голосов
/ 17 октября 2011

Я создал текстовое поле, используя раскадровку , и пытаюсь настроить делегатов. Процесс выглядит простым и обратный вызов вызывается, когда я ожидаю, но мой пользовательский объект, который я пытаюсь инициализировать в обратном вызове, похоже, не инициализируется. Я полагаю, что соответствующие биты кода находятся в ViewController для представления, содержащего текстовое поле, и в пользовательском объекте.

Как ни странно, в отладчике я вижу свойство на self.feed, которое имеет правильные методы, но я не могу войти в систему из его инициализатора, что меня сильно смущает.

Вот обратный вызов для текстового поля:

-(BOOL) textFieldShouldReturn: (UITextField *)textField {    
    NSLog(@"Begin feeding."); // This logs

    NSURL *path = [NSURL URLWithString: @"http://feeds2.feedburner.com/hackaday/LgoM"];
    self.feed = [[Feed alloc] initWithContentsOfURL: path];

    NSLog(@"Should have a feed."); // So, does this.
    [textField resignFirstResponder];

    return YES;
}

Вот интерфейс Feed:

#import <Foundation/Foundation.h>
#import "FeedItem.h"
#import "FeedParser.h"
#import "FeedParserDelegate.h"

@interface Feed : NSMutableArray <NSURLConnectionDelegate, FeedParserDelegate>{
    BOOL isValidFeed;
    FeedParser *parser;
    NSMutableData *xmlData;
    NSURLConnection *connection;
}

@property (nonatomic, retain) NSString *name;
@property (nonatomic, retain) NSURL *link;
@property (nonatomic, retain) NSURL *url;
@property (nonatomic, retain) NSString *description;

- (id) initWithUrl: (NSURL *) url; 
- (BOOL) isValidFeed;

- (void) _populate;
- (void) _fetchData;

@end

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

#import "Feed.h"

@implementation Feed

@synthesize name;
@synthesize link;
@synthesize url;
@synthesize description;


- (id) initWithUrl: (NSURL *) feedUrl{
    NSLog(@"initing with NSUrl"); // This never logs.
    self = [super init];

    if (self) {
        self.url = feedUrl;
        [self _populate];
    }

    return self;
}

По сути, мой желаемый результат - получить initing with NSUrl для входа в консоль.

Любая помощь будет принята с благодарностью. Пожалуйста, дайте мне знать, если есть другие важные детали, которые я должен опубликовать (я, очевидно, новичок в iOS).

1 Ответ

1 голос
/ 17 октября 2011

Вы звоните initWithContentsOfURL:, но вы реализовали initWithUrl:.Разве вы не получаете предупреждение компилятора?

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