2011-10-16 67 views
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的新手)。

回答

1

您在致電initWithContentsOfURL:,但您已實施initWithUrl:。你沒有得到編譯器警告?

+0

臭蟲,我簡直不敢相信。我想我沒有得到編譯器警告,因爲NSMutableArray有initWithUrl方法。 10分鐘後,我會標記爲答案,謝謝。 – fncomp