0
我已經使用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的新手)。
臭蟲,我簡直不敢相信。我想我沒有得到編譯器警告,因爲NSMutableArray有initWithUrl方法。 10分鐘後,我會標記爲答案,謝謝。 – fncomp