gpt4 book ai didi

ios - 可达性更改通知适用于 iOS5 但不适用于 iOS4

转载 作者:行者123 更新时间:2023-12-01 18:28:30 25 4
gpt4 key购买 nike

我将 Reachability Code 合并到我的应用程序中,它已经成功运行了几个月,但到目前为止我只在 iOS 5 设备上使用过它。但是,它不适用于 iOS 4 设备。

通知注册如下:

 - (id) init
{
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(reachabilityChange:)
name:kReachabilityChangedNotification
object:nil];

...


- (void) appBecameActive
{
...
self.reachability = [Reachability reachabilityWithHostName:[url host]];
...
[self.reachability startNotifier];

stopNotifier 仅在 dealloc 中被调用

问题是 ReachabilityCallback 在 reachabiity 发生变化时没有被回调,但我看不出有任何理由可以在 iOS5 而不是 iOS4 上正常。

这部分代码与Apple示例源代码相比没有变化:

static void ReachabilityCallback(SCNetworkReachabilityRef target, SCNetworkReachabilityFlags flags, void *info) {
#pragma unused (target, flags)
NSCAssert(info != NULL, @"info was NULL in ReachabilityCallback");
NSCAssert([(__bridge id)info isKindOfClass:[Reachability class]], @"info was wrong class in ReachabilityCallback");

Reachability *noteObject = (__bridge Reachability *)info;
// Post a notification to notify the client that the network reachability changed.
[[NSNotificationCenter defaultCenter] postNotificationName:kReachabilityChangedNotification object:noteObject];
}

如前所述,在 iOS5 设备上运行时一切都正常运行了很长时间,过去有没有其他人遇到过类似的问题,将可达性代码合并到 iOS4 中?

最佳答案

编辑 reachability 中发布通知的代码以将其发布到主线程,看看这是否会改变您所看到的行为。

dispatch_async(dispatch_get_main_queue(), ^{ 
[[NSNotificationCenter defaultCenter] postNotificationName:kReachabilityChangedNotification object:noteObject];
});

(假设您正在主线程上监听它们)

关于ios - 可达性更改通知适用于 iOS5 但不适用于 iOS4,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10921145/

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