通过解除引用更改NSArray中的值?

Mat*_*t.M 6 pointers objective-c nsarray dereference

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

我正在尝试做的是获取NSArray中的指针,将它们传递给方法,然后将返回的值分配回原始指针(属于该数组的指针).

根据我从C和C++中所知,通过解除引用数组中的指针,我应该能够更改它们指向的值...这是我正在使用的代码,但它不起作用(价值电话)指向永远不会根据NSLog输出更改).

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

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

- (NSString*) removeNonNumbers: (NSString*) string;
Run Code Online (Sandbox Code Playgroud)

正如您所看到的,我正在使用可变电话迭代phoneNumbers中的每个NSString*.我通过手机删除NonNumbers :,它返回修改后的NSString*.然后取消引用从removeNonNumber返回的指针并将值赋给phone.

你可以说,我可能不太了解Objective-C对象.我很确定这可以在C++或C中使用,但我不明白为什么它在这里不起作用!在此先感谢您的帮助!

Dav*_*ong 13

是的,那不行.你需要一个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];
Run Code Online (Sandbox Code Playgroud)