2014-10-28 56 views
-1

是否有任何解释为什么运行此代码时NSLog始终显示为空?价值转移问题

ExtratoDeNotasSideMenuViewController *extratoDeNotasSideMenuViewController = [[ExtratoDeNotasSideMenuViewController alloc] init]; 
extratoDeNotasSideMenuViewController.userImageView.image = [UIImage imageNamed:@"Icone_SideBar.png"]; 
NSLog(@"%@", extratoDeNotasSideMenuViewController.userImageView.image); 

2014年10月28日13:40:50.594 E-proinfo [913:51418](空)

+0

通过 “返回” 你的意思是 “显示”?如果'NSLog()'显示“null”,这是因为'extratoDeNotasSideMenuViewController.userImageView.image'为'null'。所以也许这个问题应该是“为什么'extratoDeNotasSideMenuViewController.userImageView.image'返回'null'? – zaph 2014-10-28 15:57:22

+0

也许是因为userImageView是零 – kabarga 2014-10-28 15:58:00

回答

1

可能的原因:

  • ExtratoDeNotasSideMenuViewController init返回nil因为有一个初始化过程中发生错误。

    NSLog(@"%@", extratoDeNotasSideMenuViewController); // Does this display '(null)'? 
    
  • userImageView因为你不ExtratoDeNotasSideMenuViewController init初始化它尚未初始化。

  • imagenil,因为你没有一个名为Icone_SideBar.png的图像。

您应该添加NSLog陈述或者添加断点,并使用po了解你的对象。

编辑: 如果您要设置您的视图控制器上的东西在创建视图之前(或视图创作之间的持久的事情,如果你希望你的视图控制器销毁其视图,然后在某个时候重新创建),你应该使用一个属性。

考虑以下几点:

@interface ExtratoDeNotasSideMenuViewController 
@property (strong) UIImage *myUserImage; 
... 
@end 

@implementation ExtratoDeNotasSideMenuViewController 
... 
- (void)loadView { 
    [super loadView]; 
    ... 
    [self.userImageView setImage:self.myUserImage]; 
    ... 
} 
... 
@end 

... 
    ExtratoDeNotasSideMenuViewController *extratoDeNotasSideMenuViewController = [[ExtratoDeNotasSideMenuViewController alloc] init]; 
    extratoDeNotasSideMenuViewController.myUserImage = [UIImage imageNamed:@"Icone_SideBar.png"]; 
+0

当运行 NSLog(@“%@”,extratoDeNotasSideMenuViewController); 2014年10月28日14:08:18.015 E-proinfo [1026:194071] 被显示 当运行 的NSLog(@ “%@”,extratoDeNotasSideMenuViewController.userImageView); 2014-10-28 14:08:18.015 E-proinfo [1026:194071](null) 显示为 – 2014-10-28 16:09:07

+0

因此,第二个项目符号应用...您的'userImageView'为'nil',因为您没有初始化它在你的视图控制器的'init'中。你可能在你的'viewDidLoad'或'loadView'中初始化它,这两者都不会被调用。 – 2014-10-28 16:12:40