单例数据超出范围问题

时间:2011-03-30 15:08:10

标签: objective-c scope singleton uitabbarcontroller

我正在尝试使用单例类在uitabbarcontroller的viewcontrollers之间传递数据,如下所示:

#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

我尝试在我的一个viewcontrollers中设置selectedStr,如下所示,然后在NSLog中打印,但是我得到一个null:

    AppSingleton *sharedAppInstance;//in the header

    sharedAppInstance = [AppSingleton sharedAppInstance];//in viewdidload

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

当我调试它时,sharedAppInstance.selectedStr似乎超出了范围。 我想知道我在哪里弄错了。 谢谢。

1 个答案:

答案 0 :(得分:1)

我在viewcontroller中更改了我的变量的设置/获取位置并且它有效..

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