gpt4 book ai didi

ios委托(delegate)方法未被调用

转载 作者:行者123 更新时间:2023-11-28 19:01:14 26 4
gpt4 key购买 nike

我有两个类 - 例如 Class1Class2

Class1 有一个按钮,当按下该按钮时会向 Class2 推送 segue。

此外,当按下按钮时,正在另一个类上进行网络调用。

Class1 代码:

- (IBAction)sellPressed:(id)sender
{
SPNNetworkEngine *networkEngine = [[SPNNetworkEngine alloc] init];
networkEngine.delegate = self;
[networkEngine getFarePrice];
}

Network 类中,我有:

.h文件中

@protocol SPNNetworkEngineDelegate <NSObject>

- (void) farePriceReceivedWithDetails:(id) farePrice;

@end

@property (nonatomic, weak) id delegate;
- (void) getFarePrice;

.m文件中

- (void) getFarePrice
{
...........
.......

//After all the operations, I delegate
if ([delegate respondsToSelector:@selector(farePriceReceivedWithDetails:)])
[delegate farePriceReceivedWithDetails:cost];
}
}

Class2 我有,

- (void)viewDidLoad
{
[super viewDidLoad];
SPNNetworkEngine *networkEngine = [[SPNNetworkEngine alloc] init];
networkEngine.delegate = self;
}

// Delegate method
- (void) farePriceReceivedWithDetails:(id)farePrice
{
NSLog(@"FarePrice %@", farePrice);
}

永远不会调用Class2 中的delegate 方法。我在这里做错了什么?

但是当我在 Class1 中编写委托(delegate)方法 -(void)farePriceReceivedWithDetails:(id)farePrice 时,它工作正常。

最佳答案

您的编码方法错误您在您的 Class1 中分配了 SPNNetworkEngine 类并将 SPNNetworkEngine 的委托(delegate)设置为自身。所以委托(delegate)在 class1 中被解雇了。但是你想在 class2 中使用这个方法,所以你必须为这个委托(delegate)分配 class2 对象。

第二点是你必须用这个改变这一行

@protocol SPNNetworkEngineDelegate <NSObject>

- (void) farePriceReceivedWithDetails:(id) farePrice;

@end

@property (nonatomic, strong) id <SPNNetworkEngineDelegate> delegate;
- (void) getFarePrice;

关于ios委托(delegate)方法未被调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25285322/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com