gpt4 book ai didi

ios - 比较 Obj-C 中的对象,为什么它们不匹配?

转载 作者:行者123 更新时间:2023-11-28 18:17:23 24 4
gpt4 key购买 nike

赏金通知

您好!我开始悬赏这个问题,因为人们不会阅读整个问题,也不会试图理解问题的根源。或者,不知道这里发生了什么。需要更详细的方法。谢谢!

结束

当我用自定义任务调用 NSURLSession 时 - 我将这些任务存储在字典中。当我收到委托(delegate)回电时,我需要找到它是关于哪个任务的。这是我的做法:

- (NSInteger)getOperationIdentifierForTask:(NSURLSessionTask*)task
{
for (NSString *key in self.operations)
{
HttpTaskOperation *value = [self.operations objectForKey:key];
if (value.task == task) return [key integerValue]; //**********
}

return 0;
}

它以前对我有用(肯定是 iOS7),但现在这种比较从未成功过。我还从本地人那里提取了屏幕截图,请参阅突出显示的对象 ID。是的,我不是 C 开发人员,所以它可能与问题有关 :) 我认为这是由于指针问题..

当带有//***** 的代码行执行时 - 我没有得到匹配项。此函数始终返回 0。

enter image description here

enter image description here

enter image description here

编辑:

似乎是与 PROXY 相关的问题。 iOS 当我创建和存储 NSURLSession 时实际上返回 NSProxy。 NSUURLSessionTask 也一样。这都是新事物吗?根据您在本地人中看到的情况,我如何比较这些对象?我需要获取 task._taskDelegate 但它没有公开..

最佳答案

尚不清楚您如何将项目添加到操作

这一行具有误导性:

for (NSString *key in self.operations)

因为在您的调试跟踪中,您的 key 似乎实际上是 operations 中的 NSNumbers。

为什么不尝试使用 taskIdentifier .它应该唯一标识 session 中的任务。

- (NSInteger)getOperationIdentifierForTask:(NSURLSessionTask*)task
{
NSNumber * value = self.operations[@(task.taskIdentifier)];

if( value == nil )
return 0;

return value.integerValue;
}

关于ios - 比较 Obj-C 中的对象,为什么它们不匹配?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32660581/

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