传递 NSDate

Posted

技术标签:

【中文标题】传递 NSDate【英文标题】:Passing an NSDate 【发布时间】:2010-03-27 15:50:47 【问题描述】:

我是 iPhone 和 Objective-c 的新手,我仍在努力了解对象的所有权,所以请耐心等待。

我有一个 DOBViewController,上面有一个日期选择器。我创建了一个自定义的 init 方法:

-(id)initWithInitialDate(NSDate *)initialDate;

另一个视图控制器有一个声明的日期实例(NSDate *dob),它包含一个值。我想将此传递给 DOBViewController,以便它可以将日期选择器滚动到传递的值。

这里是自定义的init方法:

- (id)initWithInitialDate:(NSDate *)initialDate 
// Initialise ourselves
self = [super init];

// Set the date of the date picker
if (initialDate != nil) 
    datePicker.date = initialDate;

else 
    // Set it to today
    datePicker.date = [NSDate date];


return self;

这就是我发送 dob NSDate 对象的方式:

DOBViewController *dobViewController = [[DOBViewController alloc] initWithInitialDate:dob];

其中 dob 是在头文件中声明的 NSDate 类型的变量。

这似乎不起作用,因为 initialDate 始终为 NULL。我做错了什么?

【问题讨论】:

【参考方案1】:

init... 方法返回时,您的 datePicker 出口尚未加载。您应该将NSDate 保存到实例变量中,然后以更合适的方法进行设置,例如viewDidLoad

【讨论】:

以上是关于传递 NSDate的主要内容,如果未能解决你的问题,请参考以下文章

C++中函数参数的传递方式有哪几种

值传递和引用传递怎么理解?

java中的参数传递——值传递引用传递

VB 参数传递:按值传递和按地址传递

C++中值传递指针传递引用传递的总结

java中参数传递--值传递,引用传递