这是我第一次尝试创建自定义委托。我创建了一个小测试来检查基本功能。
基本上调用了我的委托中的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
答案 0 :(得分:1)
如果您没有代表,则无法提出任何要求,因此您将始终为空。
尝试在创建测试实例后立即设置委托:
_share = [[share alloc]init];
_share.delegate = self;
[_share shareRoutine];
在你的问题中,你说“我的委托方法是通过......在另一个类中调用的”,这可能意味着上述不正确,但很难说。只需要了解2个课程,直到你理解它是如何工作的。