0

我在我的应用程序中设置的协议和委托存在一些问题。我正在尝试将一些数据从一个类返回到视图控制器,但是当我尝试将其发送回来时,什么也没有发生......永远不会输入协议方法。

我已经使用它作为参考进行了多次设置,只是看不到我在哪里犯了错误,所以我想如果我分享我的代码,也许这里的某人可能能够看到我看不到的东西。

这是我写的代码。

发送类.h

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

发送类.m

@synthesize SearchViewDelegate;

//..

[[self SearchViewDelegate]sendMyArray:dictionaryArray];

搜索视图.h

@interface SearchViewController : UITableViewController <SearchViewCachedData> {

搜索视图.m

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

在这里发疯,所以任何帮助都将不胜感激。

4

1 回答 1

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;
    }
}
于 2012-10-03T02:47:26.147 回答