Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/100.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c 将NSDate传递给指针时EXC\u访问错误_Objective C_Ios_Nsdate_Exc Bad Access - Fatal编程技术网

Objective c 将NSDate传递给指针时EXC\u访问错误

Objective c 将NSDate传递给指针时EXC\u访问错误,objective-c,ios,nsdate,exc-bad-access,Objective C,Ios,Nsdate,Exc Bad Access,我在注释行中得到了这个错误。 datachoice是UserData的一个对象,它是外部的,但我导入了它。 我在.h中保留了datesave,我也不知道什么是加入,一些没有发布的东西可能 h #导入 @接口DateViewController:UIViewController @属性(强,保留)IBUIDatePicker*datepick; @属性(强,保留)IBNSDATE*datesave; -(iAction)okDatebutton:(id)发送方; @结束 m -(iAction)

我在注释行中得到了这个错误。 datachoice是UserData的一个对象,它是外部的,但我导入了它。 我在.h中保留了datesave,我也不知道什么是加入,一些没有发布的东西可能

h

#导入
@接口DateViewController:UIViewController
@属性(强,保留)IBUIDatePicker*datepick;
@属性(强,保留)IBNSDATE*datesave;
-(iAction)okDatebutton:(id)发送方;
@结束
m

-(iAction)确定日期按钮:(id)发送者{
datesave=[datepick date];

datechoice->date=datesave;//您使用的是ARC吗?我认为您的属性定义看起来是错误的

如果我没有记错的话,
strong
只对ARC有效,
retain
只对ARC无效。我很惊讶,如果这是问题所在,它可以让你编译。

永远不要(*)对对象使用
->
操作符。你的意思是:

self.datechoice.date = datesave;

(*)这条规则中有一条是必需的,但它不适用于iOS,只适用于Mac。

尝试在分配给
datesave
之后添加一个
NSLog(“%p”,datechoice)
,看看是否会在日志中打印非null。您的意思是:“datachoice是UserData的对象,它是外部的,但我导入了它。”?您能显示相应的代码吗?
retain
在ARC下有效。它被视为
strong
的同义词。定义错误是对的,但我不认为这是原因。啊,是的,您是对的。虽然它看起来很奇怪!@user1191343如果您使用ARC,约定将是
(非原子,strong)
(非原子,弱)
取决于您需要的所有权类型。看起来datachoice是一个
外部的
-ed全局的,所以OP可能不想做
self
。感谢这本书,读起来很有趣:)我不能做self,因为日期选择是UserDate的外部对象,或者我可以吗?我可能不明白你的意思,谢谢..走吧它只是删除了strong,并将->更改为dotI。我明白你的意思;使用全局可变对象(首选singleton模式,甚至类方法)通常不是一个好主意,但我明白你的意思。你肯定应该使用一些命名约定来明确这是一个全局对象。@dasblinkenlight很高兴你喜欢它。谢谢。
-(IBAction)okDatebutton:(id)sender {

datesave = [datepick date];
datechoice->date = datesave; //<-----------------here is the EXC_BAD_ACCESS



}
@end
self.datechoice.date = datesave;