有什么解释为什么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)'?
-
您的
image
是nil
,因为您没有名为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"];