我使用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的新手)。
答案 0 :(得分:1)
您正在呼叫initWithContentsOfURL:
,但您已实施initWithUrl:
。您是否收到编译器警告?