Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >是否通过取消引用来更改NSArray中的值?

是否通过取消引用来更改NSArray中的值?
EN

Stack Overflow用户
提问于 2009-11-23 19:00:47
回答 5查看 10.1K关注 0票数 6

我在objective-c中遇到了一个与数组中的指针相关的问题。

我尝试做的是获取NSArray中的指针,将它们传递给一个方法,然后将返回的值赋回到原始指针(属于数组的指针)。

根据我对C和C++的了解,通过取消引用数组中的指针,我应该能够更改它们所指向的值……下面是我正在使用的代码,但它不起作用( value phone指向根据NSLog输出永远不变)。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
NSArray *phoneNumbers = [phoneEmailDict objectForKey:@"phone"];
    for (NSString* phone in phoneNumbers) {
        (*phone) = (*[self removeNonNumbers:phone]);
        NSLog(@"phone:%@", phone);
    }

下面是我将NSString*传递给的方法签名:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
- (NSString*) removeNonNumbers: (NSString*) string;

如您所见,我使用变量phone遍历了phoneNumbers中的每个NSString*。我将电话传递给removeNonNumbers:,它返回修改后的NSString*。然后,我取消对从removeNonNumber返回的指针的引用,并将该值赋给phone。

如你所知,我可能不太理解Objective-C对象。我非常确定这在C++或C中可以工作,但我不明白为什么它不能在这里工作!提前感谢您的帮助!

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2009-11-23 19:06:16

是的,那是行不通的。你需要一个NSMutableArray

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
NSMutableArray * phoneNumbers = [[phoneEmailDict objectForKey:@"phone"] mutableCopy];
for (NSUInteger i = 0; i < [phoneNumber count]; ++i) {
  NSString * phone = [phoneNumbers objectAtIndex:i];
  phone = [self removeNonNumbers:phone];
  [phoneNumbers replaceObjectAtIndex:i withObject:phone];
}
[phoneEmailDict setObject:phoneNumbers forKey:@"phone"];
[phoneNumbers release];
票数 13
EN

Stack Overflow用户

发布于 2009-11-23 19:09:02

您不能取消引用Objective-C对象变量。它们总是指针,但是你应该把它们当做原子值来对待。您需要改变数组本身以包含您正在生成的新对象。

票数 4
EN

Stack Overflow用户

发布于 2009-11-23 19:04:11

NSArray不是C/C++样式的数组。它是一个Objective-C对象。您需要使用NSArray类的instance methods来对其执行操作。

在Objective-C中,您永远不会“取消引用”对象指针来设置它的值。

此外,您使用的是所谓的Fast Enumeration,它不允许发生突变。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1785253

复制
相关文章
git restore 放弃更改、取消暂存
1. 前言 ---- git restore 用于恢复工作树文件。应用场景: 取消暂存、放弃更改 站长源码网 2. 使用示例 ---- 初始化一个 git 仓库,并且完成一次提交 git init 修改文件内容 # 修改文件内容 放弃更改 git restore Index.php 修改文件内容 # 修改文件内容 -S, --staged 取消暂存 git restore --staged Index.php 3. 命令总结 ---- # 放弃更改 收藏 | 0点赞 | 0打赏
很酷的站长
2023/02/02
4490
git restore 放弃更改、取消暂存
Objective-C中NSArray类的解读
    NSArray数组类是Objective-C语言中常用的也是重要的一个类,除了开发中常用到的一些基础功能,NSArray及其相关类中还封装了许多更加强大的功能。有机会总结了一下,与需要的朋友们分享。
珲少
2018/08/15
1.3K0
人设崩塌!最高引学者被IEEE通报:人为夸大高引,取消「最佳论文」
---- 新智元报道   来源:IEEEXplore 编辑:LQ 【新智元导读】曾经连续4年被评为工程领域最高引研究者,米兰理工大学教授Karimi竟被IEEE通报:人为夸大论文引用量,取消「最佳论文奖」。高引竟是强迫得来? 又一个人设崩塌。 曾被Web of Science数据库评为2016-2020工程领域最高引的研究者、米兰理工大学机械工程系的应用机械学教授Hamid Reza Karimi被IEEE点名:违反IEEE的出版道德原则,人为夸大(inflating)论文引用量。 IEEE的通知中
新智元
2023/05/22
4151
人设崩塌!最高引学者被IEEE通报:人为夸大高引,取消「最佳论文」
PostgreSQL中索引是否存储空值?
偶然在PostgreSQL官方文档上看到这句话:an IS NULL or IS NOT NULL condition on an index column can be used with a B-Tree index。
数据库架构之美
2021/03/16
2.4K0
数组中某值是否重复问题
遍历一遍原数组,每遍历到一个数就把其exist对应位置(如遍历到10则exist的第10个位置)的书变为1。
摸鱼的G
2023/02/22
1.5K0
NSArray 和 KVC
Theocoacao有篇不错的介绍NSArray和KVC的文章,我给粗略翻译了一下。
EltonZheng
2021/01/22
3840
jquery判断数组中是否包含某个元素的值_java判断元素是否在数组中
如果arry数组里面存在”C#” 这个字符串则返回该字符串的数组下标,否则返回(不包含在数组中) -1
全栈程序员站长
2022/11/02
5.8K0
Java 中如何判断数组中是否包含某个值?
public static boolean useLoop(String[] arr, String targetValue) { for(String s: arr){ if(s.equals(targetValue)) return true; } return false; }
水货程序员
2018/11/13
6K0
235亿用来做这个,值吗?
以5G、人工智能、大数据、区块链为代表的新兴技术正在快速地改变着人类社会的消费习惯和服务方式,各行各业无一不在数字化的促逼之下发展转型。
新智元
2023/01/08
5050
235亿用来做这个,值吗?
通过jQuery获取页面中radio选中的值
<tr> <td class="tdtext" colspan="3">2、廉洁自律,不利用岗位职权方便谋取私利。</td> <td class="trss"><input name="radio17" type="radio" value="5" required/></td> <td class="trss"><input name="radio17" type="radio" value="4" /></td> <td class="trss"><input name=
SingYi
2022/07/13
5.6K0
通过jQuery获取页面中radio选中的值
js中如何判断数组中包含某个特定的值_js数组是否包含某个值
array.includes(searchElement[, fromIndex])
全栈程序员站长
2022/09/27
18.5K0
通过psql脚本返回值判断Greenplum任务是否执行成功
本文描述问题及解决方法同样适用于 腾讯云 云数据仓库 PostgreSQL(CDWPG)。
岳涛
2021/03/17
2.5K0
通过psql脚本返回值判断Greenplum任务是否执行成功
如何检查 Java 数组中是否包含某个值 ?
在逛 programcreek 的时候,我发现了一些专注细节但价值连城的主题。比如说:如何检查Java数组中是否包含某个值 ?像这类灵魂拷问的主题,非常值得深入地研究一下。
用户7886150
2021/04/28
9.1K0
Java之判断数组中是否包含某个值
方式一:使用Arrays.asList(str).contains() public static boolean useList(String[] arr, String targetValue) { return Arrays.asList(arr).contains(targetValue); } 示例如下: String[] str={"学历教育","专业教育","通识教育","其它在职训"} ; if (!Arrays.asList(st
IT工作者
2022/02/12
4.3K0
iOSNSSet 和 NSArray的区别
●NSSet , NSMutableSet是无序的集合,在内存中存储方式是不连续的 ●通过anyObject来访问单个元素 ●遍历NSSet中的每个元素。通过forin循环来遍历
赵哥窟
2020/06/16
7430
NSArray 排序方法的实现
Compare method Either you implement a compare-method for your object: -(NSComparisonResult)compare:(Person*)otherObject {return[self.birthDate compare:otherObject.birthDate];}NSArray*sortedArray; sortedArray =[drinkDetails sortedArrayUsingSelector:@selecto
阿新
2018/04/12
6540
Spring中的引介增强
引介增强是一种特殊的增强,其它的增强是方法级别的增强,即只能在方法前或方法后添加增强。而引介增强则不是添加到方法上的增强, 而是添加到类方法级别的增强,即可以为目标类动态实现某个接口,或者动态添加某些方法。我们通过下面的事例演示引介增强的使用。
吉林乌拉
2019/08/21
1.5K0
Spring中的引介增强
协程中的取消和异常 | 取消操作详解
在日常的开发中,我们都知道应该避免不必要的任务处理来节省设备的内存空间和电量的使用——这一原则在协程中同样适用。您需要控制好协程的生命周期,在不需要使用的时候将它取消,这也是结构化并发所倡导的,继续阅读本文来了解有关协程取消的来龙去脉。
Android 开发者
2022/09/23
2.1K0
协程中的取消和异常 | 取消操作详解
JavaScript判断数组中是否包含某个值「建议收藏」
方法二:array.includes(searcElement[,fromIndex])
全栈程序员站长
2022/11/10
2.3K0
linux下监控某个目录是否被更改
需求:对一个目录(比如/data/test)进行监控,当这个目录下文件或子目录出现变动(如修改、创建、删除、更名等操作)时,就发送邮件! 针对上面的需求,编写shell脚本如下: [root@centos6-vm01 opt]# vim file_monit.sh #!/bin/bash #此脚本用于检测linux系统重要文件是否被改动,如果改动则用邮件报警 #建议用定时任务执行此脚本,如每5分钟执行一次,也可修改此脚本用于死循环检测 #Ver:1.0 #http://www.cnblogs.com/kev
洗尽了浮华
2018/01/23
5.6K0
linux下监控某个目录是否被更改

相似问题

init后更改NSArray值

10

通过更改函数返回的引用来更改全局数组值

13

通过传值查找NSArray的索引

50

循环通过设置objectAtIndex值的NSArray

10

用来自NSString的对象替换NSArray中的数字

34
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文