Синглтон-данные вне области видимости - PullRequest
1 голос
/ 30 марта 2011

Я пытаюсь передать данные между контроллерами представления uitabbarcontroller с помощью одноэлементного класса, как показано ниже:

#import <Foundation/Foundation.h>
@interface AppSingleton : NSObject {

    NSMutableString *selectedStr;
}
@property(nonatomic,retain) NSMutableString *selectedStr;
+(AppSingleton*) sharedAppInstance;
@end

Вот мой файл реализации:

#import "AppSingleton.h"
@implementation AppSingleton
@synthesize selectedStr;

+(AppSingleton*) sharedAppInstance{
    static AppSingleton *sharedAppInstance;

    @synchronized(self){
        if(!sharedAppInstance){
            sharedAppInstance = [[AppSingleton alloc] init];
        }
    }

    return sharedAppInstance;
}

-(void)dealloc{
    [selectedStr release];
    [super dealloc];
}
@end

Я пытаюсь установить selectedStr в одном из моих контроллеров представления, как показано ниже, и распечатать его в NSLog, однако получаю ноль:

    AppSingleton *sharedAppInstance;//in the header

    sharedAppInstance = [AppSingleton sharedAppInstance];//in viewdidload

[sharedAppInstance setSelectedStr:self.someStr];
        NSLog(@"selectedStr is: %@", sharedAppInstance.selectedStr);

Когда я отлаживаю это, sharedAppInstance.selectedStr кажется вне области. Я хотел бы знать, где я делаю ошибку. Спасибо.

1 Ответ

1 голос
/ 30 марта 2011

Я изменил расположение установки / получения моей переменной в viewcontroller, и это сработало ..

[sharedAppInstance setSelectedStr:self.someStr];
        NSLog(@"selectedStr is: %@", sharedAppInstance.selectedStr);
...