在iOS应用程序中访问Singleton

在iOS应用程序中访问Singleton,ios,singleton,reachability,Ios,Singleton,Reachability,这是一个关于单身的简单问题,我希望有人能尽快帮我澄清 我将按照本教程创建一个用于监视我的应用程序中的网络状态的单例 在我的AppDelegate.m中,我将管理器实例化如下: [ReachabilityManager sharedManager]; 如果我现在想查看此sharedManager,如何从应用程序中的ViewController访问它 这是该类的外观: #import "ReachabilityManager.h" #import "Reachability.h" @imple

这是一个关于单身的简单问题,我希望有人能尽快帮我澄清

我将按照本教程创建一个用于监视我的应用程序中的网络状态的单例

在我的AppDelegate.m中,我将管理器实例化如下:

[ReachabilityManager sharedManager];
如果我现在想查看此sharedManager,如何从应用程序中的ViewController访问它

这是该类的外观:

#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
非常容易:

#import "ReachabilityManager.h"

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

谢谢你的帮助!我注意到在教程中,他们在AppDelegate中创建了sharedManager。m:这是否意味着我不应该在其他视图中重新创建它?@Scientific只要它编译并运行,你就可以做任何你想做的事情。单例的意义不在于您只能在一个地方访问它,而是只有一个单例,并且(通常)只有一个类实例。有关Singleton背后的想法的更多信息,请查看我认为我理解…但是如果我尝试,例如,使用sharedManager.IsRecable,我会收到一个错误“在ReachabilityManager类型的对象上找不到属性IsRecable”,这对我来说没有意义,因为该方法是在类中定义的。@scientific
isReachable
是一个静态方法(其中有加号)。您不必初始化
Reachabilitymanager
对象就可以使用它。您只需说
可访问性管理器是可访问的
。我不能再回答你的问题了。我已经回答了你贴的问题。