如何在块外使用变量值?

时间:2014-10-17 22:34:23

标签: objective-c uiview ios8 objective-c-blocks

我有以下代码检查我的应用程序的连接性。我想在连接状态发生变化时滑入的自定义UIView上的UILabel中显示连接状态。

[编辑]

__block NSString * strConnectivityStatus = @"";

[[AFNetworkReachabilityManager sharedManager] startMonitoring];

[结束编辑]

    [[AFNetworkReachabilityManager sharedManager] setReachabilityStatusChangeBlock:^(AFNetworkReachabilityStatus status) {
    NSLog(@"Reachability: %@", AFStringFromNetworkReachabilityStatus(status));

    strConnectivityStatus = AFStringFromNetworkReachabilityStatus(status);

    switch (status) {
        case AFNetworkReachabilityStatusReachableViaWWAN:
            viewConnectivityStatus.hidden = false;
            lblConnectivityStatus.text = AFStringFromNetworkReachabilityStatus(status);
        case AFNetworkReachabilityStatusReachableViaWiFi:
            viewConnectivityStatus.hidden = false;
            lblConnectivityStatus.text = AFStringFromNetworkReachabilityStatus(status);
            break;
        case AFNetworkReachabilityStatusNotReachable:
            viewConnectivityStatus.hidden = false;
            lblConnectivityStatus.text = AFStringFromNetworkReachabilityStatus(status);
        default:
            viewConnectivityStatus.hidden = false;
            lblConnectivityStatus.text = AFStringFromNetworkReachabilityStatus(status);
            break;
    }

}];

然后我调用我的自定义UIView滑入到位:

OLSlidingMessageVC *msgConnectivityVC = [[OLSlidingMessageVC alloc] initWithTitleAndPosition:@"STATUS" message:strConnectivityStatus msgHeight:&viewHeight msgWidth:&viewWidth msgXPos:&viewXPos msgYPos:&viewYPos];

但是strConnectivityStatus总是空白的,因为我无法在块之外访问它的值。

如何让我的UIView上的UILabel显示状态?

1 个答案:

答案 0 :(得分:0)

然后不会同步调用块,因此{}不会在块外的任何位置设置strConnectivityStatus

只需在块中创建strConnectivityStatus局部变量,然后在块内执行任何操作。