nslog可以打印变量,但变量不保持值?

时间:2012-11-22 12:12:16

标签: objective-c ios xcode

我有这个:

    NSUserDefaults *defauts = [NSUserDefaults standardUserDefaults];
    NSString *namestr = [defauts objectForKey:@"savednamestring"];

    NSLog(@"%@",namestr);
    [unusedtext setText:namestr];
    NSLog(@"%@",unusedtext); 
    NSLog(@"%@",unusedtext.text);

现在,首先nslog打印出namestr的内容,例如“杰克”。

但第二个nslog和第三个nslog都提供null

当我尝试将namestr传递给实体时,它会给我一个unrecognized selector sent to instance错误,我知道这是因为 namestr没有将任何内容传递给实体,但nslog如何打印 首先出namestr。我需要将其转换为 某种格式使其有效?

3 个答案:

答案 0 :(得分:3)

unusedText可能未初始化。

答案 1 :(得分:1)

我假设unusedtext是UILabel。

有几个问题:

  • 您使用的是Interface Builder还是Storyboard?如果是,您是否将var与组件相关联?
  • 如果您没有使用IB或Storyboard,这个“unusedtext”是否已初始化?
  • 你在使用ARC吗?如果不是,是不是undetext自动释放?或者在您的代码之前发布?
  • 如果您使用的是ARC,那么未使用的文字是否标记为STRONG?

希望能帮到你!

答案 2 :(得分:0)

那是因为你还没有初始化unusedtext变量。

如果是NSString则执行此操作

NSUserDefaults *defauts = [NSUserDefaults standardUserDefaults];
NSString *namestr = [defauts objectForKey:@"savednamestring"];

NSLog(@"%@",namestr);
unusedtext = [NSString stringWithString:namestr];
NSLog(@"%@",unusedtext); 
NSLog(@"%@",unusedtext.text);

如果它是UITextView或UITextfield而不是这样做,而是!

NSUserDefaults *defauts = [NSUserDefaults standardUserDefaults];
NSString *namestr = [defauts objectForKey:@"savednamestring"];

NSLog(@"%@",namestr);
UITextField *unusedtext = [[UITextField alloc] init];
[unusedtext setText:namestr];
NSLog(@"%@",unusedtext); 
NSLog(@"%@",unusedtext.text);
希望有所帮助!