2016-08-26 14 views
0

私のアプリでシングルクラスを実装しようとしています。 私のsharedInstanceはAppmanager.m目的cシングルトン共有インスタンスが呼び出されていない

Appmanager.h

#import <Foundation/Foundation.h> 

@interface myAppManager : NSObject{ 

} 
+ (id)sharedManager; 
-(void)storeData; 
@end 

をたどる

#import "myAppManager.h" 

@implementation myAppManager 
+ (id)sharedManager { 
    static myAppManager *sharedMyManager = nil; 
    static dispatch_once_t onceToken; 
    dispatch_once(&onceToken, ^{ 
    sharedMyManager = [[self alloc] init]; 
    }); 
    return sharedMyManager; 
} 

- (id)init { 
    if (self = [super init]) { 

    } 
    return self; 
} 
-(void)storeData{ 
    NSLog(@"store data called"); 
} 
@end 

私は従う

[myAppManager sharedManager]; 
としてdidFinishLaunchingWithOptionsでappdelegateからsharedManagerを呼ぶようです3210

sharedInstanceメソッドが呼び出されていないため、デバッグポイントを使用しようとしましたが、呼び出していません。 私は何が間違っていますか?

[[myAppManager sharedManager] storeData]; 

これも呼び出されません。

+0

あなたのコードは、私の作品と呼ばれるデータを格納します。整理しておくと、 'MyAppManager'でなければならず、sharedManagerは' id'ではなく 'instanceType'を返すべきです – Paulw11

+0

myAppManagerクラスのインスタンスを明示的に作成してstoreDataメソッドを呼び出そうとしましたか? – Arun

+0

私はあなたのコード兄弟を試しました。それは私のためにうまく動作します。 – user3182143

答えて

0
@interface MyAppManager : NSObject 

+ (instancetype)sharedManager; 

- (void)storeData; 

@end 

@implementation MyAppManager 

+ (instancetype)sharedManager 
{ 
    NSLog(@"%s",__PRETTY_FUNCTION__); 

    static MyAppManager *singletonObj = nil; 

    static dispatch_once_t onceSecurePredicate; 
    dispatch_once(&onceSecurePredicate,^{ 
         singletonObj = [[self alloc] init]; 
        }); 

    return singletonObj; 
} 

- (instancetype)init 
{ 
    NSLog(@"%s",__PRETTY_FUNCTION__); 

    self = [super init]; 

    if (self) 
    { 
     NSLog(@"initialized!"); 
    } 

    return self; 
} 

- (void)storeData 
{ 
    NSLog(@"%s",__PRETTY_FUNCTION__); 
} 

@end 
0

myAppManager.h

#import <Foundation/Foundation.h> 

@interface myAppManager : NSObject 
+ (id)sharedManager; 
-(void)storeData; 
@end 

myAppManager.m

#import "myAppManager.h" 

@implementation myAppManager 

+ (id)sharedManager 
{ 
    static myAppManager *sharedMyManager = nil; 
    static dispatch_once_t onceToken; 
    dispatch_once(&onceToken, ^{ 
    sharedMyManager = [[self alloc] init]; 
    }); 
    return sharedMyManager; 
} 

- (id)init 
{ 
    if (self = [super init]) { 
    } 
    return self; 
} 
-(void)storeData 
{ 
    NSLog(@"store data called"); 
} 
@end 

AppDelegate.h

#import <UIKit/UIKit.h> 
#import "myAppManager.h" 
@interface AppDelegate : UIResponder <UIApplicationDelegate> 
{ 
    myAppManager *appManager; 
} 
@property (strong, nonatomic) UIWindow *window; 
@end 

AppDelegate.m

07::
#import "AppDelegate.h" 
@interface AppDelegate() 
{ 
} 

@end 

@implementation AppDelegate 


- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 
{ 
    // Override point for customization after application launch. 
    appManager = [myAppManager sharedManager]; 
    [appManager storeData]; 
    return YES; 
} 

マイコンソール出力は

2016年8月26日17である14.805 SingletonClasswithAppDelegate [2383:77763]

関連する問題