2012-10-03 44 views
0

我在我的應用程序中設置了我的協議&委託,但我遇到了一些問題。 我試圖從一個類返回一些數據返回到一個viewcontroller,但是當我嘗試發回它什麼也沒有發生......協議方法永遠不會輸入。從代表處調用時沒有輸入協議方法

我已經結束了幾次使用this作爲參考,只是不知道我在哪裏做錯誤,所以我想如果我分享我的代碼也許這裏有人可能會看到我不能。

下面是我寫的代碼。

SendingClass.h

@protocol SearchViewCachedData <NSObject> 
- (void)sendMyArray:(NSArray *)array; 
@end 
//.. 
    __weak id <SearchViewCachedData> SearchViewDelegate; 
//.. 
    @property (weak, nonatomic) id <SearchViewCachedData> SearchViewDelegate; 
//.. 

SendingClass.m

@synthesize SearchViewDelegate; 

//.. 

[[self SearchViewDelegate]sendMyArray:dictionaryArray]; 

SearchView.h

@interface SearchViewController : UITableViewController <SearchViewCachedData> { 

SearchView.m

- (void)sendMyArray:(NSArray *)array 
{ 
    //Break point in here.. but its never reached. 
} 

去升技瘋狂這裏,所以任何幫助什麼那麼將不勝感激。

+0

你在哪裏實例化和分配你的'SearchViewController'(或其他任何實現此協議的對象)?另外,以大寫字母開頭的命名屬性和變量可以使代碼更難以理解,因爲約定以小寫開頭。只是FYI。 –

回答

1

我有一種感覺,你的委託是沒有設置

檢查以確保searchViewDelegate設置爲一個實例值

if (self.searchViewDelegate != nil) { 
    [self.searchViewDelegate sendArray:array]; 
} 

也。物業應該有他們的第一個案件小寫。類是大寫的項目。

修正案

它可能會得到通過代碼另一部分設置爲零或者你可能根本不會被設置它。

你在哪裏合成你的委託,你也可以創建一個setter。

@synthesize searchViewDelegate = _searchViewDelegate; 
- (void) setSearchViewDelegate:(id<SearchViewCachedData>) searchViewDelegate{ 
    if (searchViewDelegate != searchViewDelegate){ // Add breakpoint here to see when set is called. 
     searchViewDelegate = searchViewDelegate; 
    } 
} 
+0

在if和step中添加一個斷點。我想你的變量是無 –

+0

我應該在哪裏放這段代碼對不起..我的大腦正在落在這個問題單獨3小時... – HurkNburkS

+0

把它放在你調用你的sendArray:方法,並用它來測試你的委託是否被填充。如果它爲零,那麼它不會觸及sendArray:方法。它會跳過它。 –