Cocoa 框架中的属性副本是什么意思?(如 UITabBar 的 items 属性)

2024-04-15移动开发问题
2

本文介绍了Cocoa 框架中的属性副本是什么意思?(如 UITabBar 的 items 属性)的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着跟版网的小编来一起学习吧!

问题描述

在 UITabBar.h 中,一个属性签名的副本

In UITabBar.h, a propery signed copy

@property(nonatomic,copy) NSArray *items;//获取/设置可见

@property(nonatomic,copy) NSArray *items; // get/set visible

这是一个数组复制"是什么意思?复制 NSArray 容器 obj?复制每个 obj NSArray 包含的内容?什么的.

It's a array And what "copy" means? copy NSArray container obj? copy every obj NSArray contains? or something.

UITabBar* testBar = [[UITabBar alloc] init];
UITabBarItem* item = [[UITabBarItem alloc] init];
NSArray* array = [[NSArray alloc] initWithObjects:item, nil];

NSLog(@"bar:%p,%d", testBar, testBar.retainCount);
NSLog(@"item:%p,%d", item, item.retainCount);
NSLog(@"array:%p,%d", array, array.retainCount);

testBar.items = array;

NSLog(@"that item:%p,%d", [testBar.items lastObject], [[testBar.items lastObject] retainCount]);
NSLog(@"testBar.items:%p,%d", testBar.items, testBar.items.retainCount);

结果

栏:0x96a9750,1

result

bar:0x96a9750,1

项目:0x96aa230,2

item:0x96aa230,2

数组:0x96aa280,1

array:0x96aa280,1

那个项目:0x96aa230,2

that item:0x96aa230,2

testBar.items:0x96aa280,6

testBar.items:0x96aa280,6

为什么容器数组和数组中的obj都没有被复制"?

why neither container array nor obj in array has been "copied"?

推荐答案

这种情况下没有复制的原因是NSArray不可变的.您不需要复制它来防止对数组进行更改,因为无法进行此类更改;保留相同的不可变数组就足够了.

The reason the copy has not been made in this case is that NSArray is immutable. You do not need to make a copy of it to guard against changes to the array, because such changes cannot be made; it is sufficient to retain the same immutable array.

如果你用 NSMutableArray 尝试这个实验,你会得到不同的结果.

If you try this experiment with NSMutableArray, you will get a different result.

这篇关于Cocoa 框架中的属性副本是什么意思?(如 UITabBar 的 items 属性)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持跟版网!

The End

相关推荐

硬件音量按钮更改应用程序音量
Hardware Volume buttons change in app volume(硬件音量按钮更改应用程序音量)...
2024-08-12 移动开发问题
10

Cocos2d - 如何检查不同层中对象之间的交集
Cocos2d - How to check for Intersection between objects in different layers(Cocos2d - 如何检查不同层中对象之间的交集)...
2024-08-12 移动开发问题
8

恢复游戏 cocos2d
Resume game cocos2d(恢复游戏 cocos2d)...
2024-08-12 移动开发问题
6

突出显示朗读文本(在 iPhone 的故事书类型应用程序中)
Highlight Read-Along Text (in a storybook type app for iPhone)(突出显示朗读文本(在 iPhone 的故事书类型应用程序中))...
2024-08-12 移动开发问题
9

Cocos2D + 仅禁用 Retina iPad 图形
Cocos2D + Disabling only Retina iPad Graphics(Cocos2D + 仅禁用 Retina iPad 图形)...
2024-08-12 移动开发问题
10

如何将 32 位 PNG 转换为 RGB565?
How to convert 32 bit PNG to RGB565?(如何将 32 位 PNG 转换为 RGB565?)...
2024-08-12 移动开发问题
21