首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NSPointerFunctionsCopyIn混淆

NSPointerFunctionsCopyIn混淆
EN

Stack Overflow用户
提问于 2013-12-03 11:03:05
回答 1查看 139关注 0票数 1

我尝试将一个NSDate对象添加到配置有(NSPointerFunctionsCopyIn)选项的NSPointerArray中:

代码语言:javascript
复制
NSDate *today= [NSDate date];

NSPointerArray *p_arr = [NSPointerArray pointerArrayWithOptions:NSPointerFunctionsCopyIn];

[p_arr addPointer:(void *)today];

 // comparing addresses;

 NSLog(@" Addresses are: %p  , %p " , today , [p_arr pointerAtIndex:0]);

//Addresses are:0x1004005d0  , 0x1004005d0

但是,正如我所知道的"NSPointerFunctionsCopyIn“,指针数组中的对象应该是一个新的副本,而不是一个共享的对象。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-12-03 11:28:13

正如在周五Q&A 2010-05-28:豹收藏班中解释的那样,NSPointerFunctionsCopyIn选项导致使用NSCopying协议“复制”对象指针。这并不一定意味着要创建一个新的对象。

对于不可变对象(如NSDate),可以通过保留原始对象而不是创建新副本来实现NSCopying。这就是在你的案例中发生的事情:

代码语言:javascript
复制
NSDate *today = [NSDate date];
NSDate *today2 = [today copy];

NSLog(@"%p %p", today, today2);
// Output: 0x1001040f0 0x1001040f0
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20349340

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档