0

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

基本上shareRoutine我的委托中的方法被调用,但变量的返回值NSLog因此NULL暗示我- (NSString*) shareRoutineDel没有被正确调用或检索。

谁能指出为什么这不起作用?

我已经包含<shareDelegate>在 this 的 .h 文件中UIViewController,但还没有做更多的事情,我的委托方法在另一个类中被调用。

- (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
4

1 回答 1

1

如果你没有委托,你就不能要求任何东西,所以你总是有空值。

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

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

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

于 2013-07-12T09:17:27.777 回答