价值转移问题



有什么解释为什么NSLog在运行此代码时总是显示null吗?

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〕(空)

潜在原因:

  • 您的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检查对象。

编辑:如果您想在创建视图之前在视图控制器上设置一些内容(或者,如果您希望视图控制器破坏其视图,然后在某个时刻重新创建它,则在视图创建之间设置一个持久的内容),则应使用一个属性。

考虑以下内容:

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

最新更新