2012-02-03 82 views
0

访问它时,我得到一个空的var值。该var被正确覆盖。在.M正确设置了xcode空var var

NSString *nomTab1; 

@property (strong, nonatomic) NSString *nomTab1; 

“NAME1” 被宣布在类似的.h

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 
{  
    self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; 

    NSArray *viewControllers = [NSArray alloc]; 

    nomTab1 = [NSString alloc]; 

也synthezided和功能执行过程中正确设置。但是,当我尝试从另一个函数(同一个控制器)访问它时,它有一个空值。似乎是一个基本问题,但不工作......谢谢。

+0

您需要分配它 – 2012-02-03 13:06:01

+0

您确定在访问它之前设置了值吗? – Ilanchezhian 2012-02-03 13:07:28

+0

您的问题没有足够的信息可用。发布您的初始化代码。 – Vignesh 2012-02-03 13:07:39

回答

0

您没有正在保留nomTab1。你说你已经综合了它,但你没有使用self.nomTab1 = ...,所以价值不被保留。

检查出this的合成和合适的解释。

0

你必须初始化它。你应该在你的课堂上有一个初始方法,如下所示:

- (id)init { 
    self = [super init]; 
    if (self) { 
     // do something 
     self.nomTab1 = [NSString string]; 
    } 
    return self; 
} 
0

你不应该在你的代码中有一个裸分配。你应该alloc和初始化在一起,就像这样:

NSArray *viewControllers = [[NSArray alloc] initWithObjects:..]; 
nomTab1 = [[NSString alloc] initWithSomeValue:...]; 

NSArrays和NStrings是不可变的,这样他们就没有任何价值,除非他们已经被初始化(这可能是为什么他们似乎空当您访问它们)一旦它们被初始化,它们就不能被改变。

如果您打算稍后设置它们的值,可以将它们设置为nil,并在知道它们是什么时将它们设置为对象,或者使用NSMutableArray和NSMutableString,它们可以在创建后进行修改。