Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/25.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
Ios 如何使NSDate与关联对象一起工作?_Ios_Objective C - Fatal编程技术网

Ios 如何使NSDate与关联对象一起工作?

Ios 如何使NSDate与关联对象一起工作?,ios,objective-c,Ios,Objective C,我想向NSDate对象添加关联对象。为了做到这一点,我使用了下面描述的方法 我现在的问题是,iOS不会(不再?)为同一日期创建不同的NSDate对象(请参阅)。因此,如果有两个项目具有相同的NSDate,则无法区分对象,并且为特定项目添加关联对象的方法失败 我尝试过不同的方法: 使用NSDate的copy方法 NSDate*deepCopy=[[NSDate alloc]initWithTimeInterval:0 sinceDate:date] NSDate*deepCopy=[date-d

我想向
NSDate
对象添加关联对象。为了做到这一点,我使用了下面描述的方法

我现在的问题是,iOS不会(不再?)为同一日期创建不同的NSDate对象(请参阅)。因此,如果有两个项目具有相同的NSDate,则无法区分对象,并且为特定项目添加关联对象的方法失败

我尝试过不同的方法:

  • 使用
    NSDate的
    copy
    方法
  • NSDate*deepCopy=[[NSDate alloc]initWithTimeInterval:0 sinceDate:date]
  • NSDate*deepCopy=[date-dateByAddingTimeInterval:0]
但是我命名的变量
deepCopy
不是原始
date
对象的深度副本




我能做什么?

您是否考虑过创建一个自定义模型对象来表示日期和任何其他要与之关联的数据的组合?应尽可能避免关联对象。为什么不将
NSObject
子类化以创建一个具有两个属性的模型对象?一个是
NSDate
属性,另一个是要与之关联的附加数据的属性/属性。

您是否考虑过创建一个自定义模型对象来表示日期和任何其他要关联的数据的组合用它?应尽可能避免关联对象。为什么不将
NSObject
子类化以创建一个具有两个属性的模型对象?一个是
NSDate
属性,另一个是要与之关联的附加数据的属性/属性。

您是否考虑过创建一个自定义模型对象来表示日期和任何其他要关联的数据的组合用它?应尽可能避免关联对象。为什么不将
NSObject
子类化以创建一个具有两个属性的模型对象?一个是
NSDate
属性,另一个是要与之关联的附加数据的属性/属性。

您是否考虑过创建一个自定义模型对象来表示日期和任何其他要关联的数据的组合用它?应尽可能避免关联对象。为什么不将
NSObject
子类化以创建一个具有两个属性的模型对象呢?一个是
NSDate
属性,另一个是要与之关联的附加数据的属性/属性。

通常,当NS做一些棘手的事情时,您可以得到一个不做那些棘手事情的CF纯C版本,或者您至少可以关闭它。。。我认为这也是一个解决办法。但是,我仍然希望有人有另一个想法,这将意味着我当前项目中的更改更少。:-)问题是64位运行时在许多情况下使用“标记指针”(指针不是指针,而是直接包含信息)。不幸的是,关联对象不能与标记指针一起工作,这里也观察到了这一点:。@Martin R:谢谢!现在已经确定:我必须更改代码。即使在最好的情况下,Objective-C“关联对象”机制也是脆弱的。通常,当NS做一些棘手的事情时,你可以得到一个不做那些棘手事情的CF普通C版本,或者你至少可以关闭它。。。我认为这也是一个解决办法。但是,我仍然希望有人有另一个想法,这将意味着我当前项目中的更改更少。:-)问题是64位运行时在许多情况下使用“标记指针”(指针不是指针,而是直接包含信息)。不幸的是,关联对象不能与标记指针一起工作,这里也观察到了这一点:。@Martin R:谢谢!现在已经确定:我必须更改代码。即使在最好的情况下,Objective-C“关联对象”机制也是脆弱的。通常,当NS做一些棘手的事情时,你可以得到一个不做那些棘手事情的CF普通C版本,或者你至少可以关闭它。。。我认为这也是一个解决办法。但是,我仍然希望有人有另一个想法,这将意味着我当前项目中的更改更少。:-)问题是64位运行时在许多情况下使用“标记指针”(指针不是指针,而是直接包含信息)。不幸的是,关联对象不能与标记指针一起工作,这里也观察到了这一点:。@Martin R:谢谢!现在已经确定:我必须更改代码。即使在最好的情况下,Objective-C“关联对象”机制也是脆弱的。通常,当NS做一些棘手的事情时,你可以得到一个不做那些棘手事情的CF普通C版本,或者你至少可以关闭它。。。我认为这也是一个解决办法。但是,我仍然希望有人有另一个想法,这将意味着我当前项目中的更改更少。:-)问题是64位运行时在许多情况下使用“标记指针”(指针不是指针,而是直接包含信息)。不幸的是,关联对象不能与标记指针一起工作,这里也观察到了这一点:。@Martin R:谢谢!现在已经确定:我必须更改代码。即使在最好的情况下,Objective-C“关联对象”机制也是脆弱的。最好避免,谢谢。是的,这将是比使用关联对象更好的方法。如果我不能使我目前的方法起作用,我会用这个。然而,这意味着我必须在我当前的代码中进行许多更改…请不要误解我的意思,但这是依赖于未记录行为(
-copy
)和边缘案例解决方案(关联对象)的结果。你完全正确。我非常遗憾,我决定使用关联对象。@vomako我认为这取决于您与日期对象关联的信息,但可能不是。如果不是天生的日期-