这是我第一次尝试创建自定义委托(delegate)。我创建了一个小测试来检查基本功能。
基本上是shareRoutine
我的委托(delegate)中的方法被调用,但返回值在NSLog
上有效的是 NULL
这意味着我的- (NSString*) shareRoutineDel
未正确调用或检索。
有人能指出为什么这不起作用吗?
我已经包含了<shareDelegate>
在这个UIViewController
的.h文件中,但还没有做更多的事情,我的委托(delegate)方法是在另一个类中通过调用的。
- (IBAction)share:(UIButton *)sender {
_share = [[share alloc]init];
[_share shareRoutine];
}
- (NSString*) shareRoutineDel {
NSString* a= @"test";
return a;
}
我的委托(delegate)类
.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
最佳答案
如果你没有委托(delegate),你就不能向它请求任何东西,所以你将永远拥有 null。
尝试在创建测试实例后立即设置委托(delegate):
_share = [[share alloc]init];
_share.delegate = self;
[_share shareRoutine];
在你的问题中,你说“我的委托(delegate)方法是通过...在另一个类中调用的”,这可能意味着上面的内容不正确,但很难说。只需让它与 2 个类一起工作,直到您了解它是如何工作的。
关于ios - 从自定义委托(delegate)方法检索数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17611303/