내 응용 프로그램의 연결을 확인하는 다음 코드가 있습니다. 연결 상태가 변경 될 때 슬라이드하는 사용자 지정 UIView에있는 UILabel에 연결 상태를 표시하려고합니다.외부 변수 값을 사용하는 방법은 무엇입니까?
[편집]
__block NSString * strConnectivityStatus = @"";
[[AFNetworkReachabilityManager sharedManager] startMonitoring];
[END 편집]
[[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에 상태가 표시되게하려면 어떻게해야합니까?
strConnectivityStatus에 __block 수정자를 사용하십시오. – gagarwal
@ gagarwal 변수의 정의에 이미 __block 수정자가 있었기 때문에이 게시물을 편집했습니다. 값이 설정된 블록 외부에서 내 코드의 다른 값을 사용하고 싶습니다. – motionpotion
@ gagarwal : '__block'을 사용하면 블록이 비동기 적으로 호출된다는 문제가 있기 때문에 쓸모가 없습니다. – newacct