从自定义委托方法中检索数据

时间:2013-07-12 09:07:53

标签: ios objective-c cocoa-touch

这是我第一次尝试创建自定义委托。我创建了一个小测试来检查基本功能。

基本上调用了我的委托中的shareRoutine方法,但NSLog valiable上的返回值为NULL,这意味着我的- (NSString*) shareRoutineDel未被正确调用或检索

有人能指出为什么这不起作用吗?

我已将<shareDelegate>包含在此UIViewController的.h文件中,但还没有完成更多操作,我的委托方法在另一个类中被调用。

- (IBAction)share:(UIButton *)sender {
    _share = [[share alloc]init];
    [_share shareRoutine];
}
- (NSString*) shareRoutineDel {
    NSString* a= @"test";
    return a;
}

我的委托课程

.h
 @class share;
    @protocol shareDelegate

    @optional
    -(NSString*) shareRoutineDel;
    @end

    @interface share : NSObject
    @property (nonatomic, weak) id<shareDelegate> delegate;
    - (void) shareRoutine;
    @end

的.m

#import "share.h"

@implementation share
@synthesize delegate;

- (id) init {
    if (self = [super init]) {
    }
    return self;
}

-(void) shareRoutine {
    NSString * response = [[self delegate] shareRoutineDel];
    NSLog(@"check: %@",response);
}
@end

1 个答案:

答案 0 :(得分:1)

如果您没有代表,则无法提出任何要求,因此您将始终为空。

尝试在创建测试实例后立即设置委托:

_share = [[share alloc]init];
_share.delegate = self;
[_share shareRoutine];

在你的问题中,你说“我的委托方法是通过......在另一个类中调用的”,这可能意味着上述不正确,但很难说。只需要了解2个课程,直到你理解它是如何工作的。