价值转移问题

时间:2014-10-28 15:56:06

标签: ios nslog

有没有解释为什么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](null)

1 个答案:

答案 0 :(得分:1)

潜在原因:

  • 您的ExtratoDeNotasSideMenuViewController init已退回nil,因为初始化期间出错。

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

    NSLog(@"%@", extratoDeNotasSideMenuViewController.userImageView); // Does this display '(null)'?
    
  • 您的imagenil,因为您没有名为Icone_SideBar.png的图片。

您应该添加NSLog语句或添加断点并使用po来检查对象。

修改: 如果要在创建视图之前在视图控制器上设置某些内容(或者如果您希望视图控制器销毁其视图然后在某个时刻重新创建视图创建之间的持久性事物),则应使用属性。 / p>

请考虑以下事项:

@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"];