objective-c - Objective-c 中的属性问题

标签 objective-c ios properties uitableview viewdidload

我在将类的实例分配给以下 UITableViewController 子类时遇到问题:

@interface MyTableViewController : UITableViewController </*usual protocols*/>
@property (nonatomic, retain) MyClass *myClass;
@end

我目前正在将 MyClass 的非空实例分配给 MyTableViewController 的实例,如下所示:

MyTableViewController *myTableViewController = [[MyTableViewController alloc] init];
MyClass *nonNullInstanceOfMyClass = [[MyClass alloc] init];

myTableViewController.myClass = nonNullInstanceOfMyClass;

[self.navigationController pushViewController:myTableViewController animated:YES];

[nonNullInstanceOfMyClass release];
[myTableViewController release];

问题是 myClass 在 MyTableViewController 的 viewDidLoad 中是 null为什么会这样?

编辑 #1:我通过 NSLogging 检查 nonNullInstanceOfMyClass 是否不为空。

编辑 #2:提供了更多代码。另外 viewDidLoad 似乎在我推送 View Controller 之前被调用(这可能会导致问题......虽然看起来很奇怪)。

编辑 #3:通过将 self.tableView.delegate = nil;self.tableView.dataSource = nil;initviewDidLoad

最佳答案

在实例化 View Controller 和分配给属性之间您是否正在做任何事情? viewDidLoad 不一定在您将 View Controller 推送到导航堆栈时被调用 - 它会在需要加载 View 时被调用。因此,例如,NSLog(@"%@", myTableViewController.view); 将触发 viewDidLoad,如果您在分配给属性之前执行此操作,那将解释这种行为。

您可以发布实际代码而不是近似代码吗?您可能遗漏了一些重要的细节。

关于objective-c - Objective-c 中的属性问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7522897/

相关文章:

ios - 根据 NSDictionay 中的键对 NSDictionary 的 NSArray 进行分组

ios - 有没有办法禁用 Touch ID 提示(UIAlertview)?

spring - 如何从 spring webapp 中的命令行覆盖属性

Spring - 从 JNDI 设置属性值

c# - 最佳实践 : Accessor properties or parameterless methods?

ios - 按下“完成”按钮时 PickerView 不会关闭

ios - 在 Bubble Tableview cell tap 上读取 NSBubbledata

ios - 访问选项卡栏 Controller 中的选项卡元素并更改值

ios - 如何从视频 url iOS 获取可用的视频尺寸/质量?

iOS 关闭所有键盘和模式控件