在委托中初始化自定义对象

时间:2011-10-16 22:48:36

标签: objective-c ios delegates

我使用storyboard创建了一个文本字段,并尝试设置代理。该过程看起来很简单,并且在我期望的时候调用回调,但是我尝试在回调中初始化的自定义对象似乎没有初始化。我相信相关的代码位在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 个答案:

答案 0 :(得分:1)

您正在呼叫initWithContentsOfURL:,但您已实施initWithUrl:。您是否收到编译器警告?