2014-09-07 5 views
0

싱글 톤에 대한 질문은 누군가가 나를 빨리 해결할 수 있기를 바랄뿐입니다.iOS 앱에서 싱글 톤에 액세스하기

내 응용 프로그램에서 네트워크 상태를 모니터링하기위한 싱글 톤을 만드는 방법에 대한 설명입니다. 다음과 같이

http://code.tutsplus.com/tutorials/ios-sdk-detecting-network-changes-with-reachability--mobile-18299

내 AppDelegate.m에서 나는 매니저의 인스턴스 :

[ReachabilityManager sharedManager]; 

내가 지금은 내 응용 프로그램에 viewControllers에서 액세스 할 방법이 sharedManager, 확인하려면 ?

#import "ReachabilityManager.h" 
#import "Reachability.h" 

@implementation ReachabilityManager 

#pragma mark - 
#pragma mark Default Manager 
+ (ReachabilityManager *)sharedManager { 
    static ReachabilityManager *_sharedManager = nil; 
    static dispatch_once_t onceToken; 
    dispatch_once(&onceToken, ^{ 
     _sharedManager = [[self alloc] init]; 
    }); 

    return _sharedManager; 
} 

#pragma mark - 
#pragma mark Memory Management 
- (void)dealloc { 
    // Stop Notifier 
    if (_reachability) { 
     [_reachability stopNotifier]; 
    } 
} 

#pragma mark - 
#pragma mark Class Methods 
+ (BOOL)isReachable { 
    return [[[ReachabilityManager sharedManager] reachability] isReachable]; 
} 

+ (BOOL)isUnreachable { 
    return ![[[ReachabilityManager sharedManager] reachability] isReachable]; 
} 

+ (BOOL)isReachableViaWWAN { 
    return [[[ReachabilityManager sharedManager] reachability] isReachableViaWWAN]; 
} 

+ (BOOL)isReachableViaWiFi { 
    return [[[ReachabilityManager sharedManager] reachability] isReachableViaWiFi]; 
} 

#pragma mark - 
#pragma mark Private Initialization 
- (id)init { 
    self = [super init]; 

    if (self) { 
     // Initialize Reachability 
     self.reachability = [Reachability reachabilityWithHostname:@"www.google.com"]; 

     // Start Monitoring 
     [self.reachability startNotifier]; 
    } 

    return self; 
} 

@end 

답변

1

를 정말 쉽게 : 당신의 도움에 대한

#import "ReachabilityManager.h" 

// Maybe in viewDidLoad 
ReachabilityManager *sharedManager = [ReachabilityManager sharedManager]; 
// do stuff with your sharedManager 
+0

감사

이 클래스처럼 보이는 것입니다! 튜토리얼에서 AppDelegate.m에 sharedManager가 생성 된 것을 확인했습니다. http://code.tutsplus.com/tutorials/ios-sdk-detecting-network-changes-with-reachability--mobile-18299 다른보기에서 그것을 재현하지 않아야합니까? – scientiffic

+0

@scientiffic 컴파일되고 실행되는 한 원하는 모든 작업을 수행 할 수 있습니다. 싱글 톤의 요점은 하나의 장소에서만 액세스 할 수있는 것은 아니지만 싱글 톤이 하나 뿐이며 클래스의 인스턴스가 하나만 존재한다는 것입니다. 싱글 톤의 아이디어에 대한 자세한 내용은 [wikipedia] (http://en.wikipedia.org/wiki/Singleton_pattern)를 확인하십시오. – michaelsnowden

+0

나는 이해한다고 생각합니다. 그러나 예를 들어 sharedManager.isReachable을 사용하려고하면 "ReachabilityManager 유형의 객체에서 isReachable 속성을 찾을 수 없습니다."라는 오류가 발생합니다.이 메서드는 클래스에 정의되어 있으므로 이해가되지 않습니다. – scientiffic

관련 문제