从委托调用时未输入协议方法

时间:2012-10-03 02:39:33

标签: ios delegates protocols

我的协议和问题有些问题。委托我在我的应用程序中设置。 我试图将一些数据从类返回到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.
}

在这里放弃疯狂,所以任何帮助都会非常感激。

1 个答案:

答案 0 :(得分:1)

我感觉你的代表没有设置

检查以确保searchViewDelegate设置为实例值

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

另外。属性应该是他们的第一个案例小写。类是大写的项。

<强>修正案

可能会被代码中的其他部分设置为nil,或者您可能根本没有设置它。

在您合成代理的地方,您也可以创建一个setter。

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