gpt4 book ai didi

objective-c - 通过取消引用更改 NSArray 中的值?

转载 作者:太空狗 更新时间:2023-10-30 03:39:30 26 4
gpt4 key购买 nike

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

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

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

NSArray *phoneNumbers = [phoneEmailDict objectForKey:@"phone"];
for (NSString* phone in phoneNumbers) {
(*phone) = (*[self removeNonNumbers:phone]);
NSLog(@"phone:%@", phone);
}

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

- (NSString*) removeNonNumbers: (NSString*) string;

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

如您所知,我可能不太了解 Objective-C 对象。我很确定这会在 C++ 或 C 中工作,但我不明白为什么它在这里不起作用!预先感谢您的帮助!

最佳答案

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

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];

关于objective-c - 通过取消引用更改 NSArray 中的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1785253/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com