gpt4 book ai didi

objective-c - NSArray 和 NSString

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

我正在读的书让我写了下面的代码:

-(IBAction)displaySomeText:(id)sender {
NSString *cow = @"Milk";
NSString *chicken = @"Egg";
NSString *goat = @"Butter";

NSArray *food = [NSArray arrayWithObjects:cow, chicken, goat, nil];

NSString *string = @"The shopping list is: ";
string = [string stringByAppendingString:[food componentsJoinedByString:@", "]];

[textView insertText:string];

我有点了解数组的工作原理,但我需要帮助才能理解以下代码

string = [string stringByAppendingString:[food componentsJoinedByString:@", "]];

我从未见过可以做到这一点的实例。

他让我从 NSString 类中创建一个“字符串”对象,然后我就这样做了

string = [string stringByAppendingString:];

我很困惑。我从未见过创建对象然后对同一对象执行方法并将其存储在完全相同的对象中的示例。

例如,我知道我可以做到这一点

NSSound *chirp;
chirp = [NSSound soundNamed:@"birdChirp.mp3"];

上面的内容是有道理的,因为我使用了创建的对象并在其上执行了一个类方法..

但我一直认为以下代码的等价物是不可能的

chirp = [chirp methodNameEtc..];

希望我能很好地解释我的问题。如果没有,我总是可以进一步阐述。

最佳答案

我认为这是您问题的核心“我很困惑。我从未见过创建对象然后对同一对象执行方法并将其存储在完全相同的对象中的示例。 "

要回答这个问题,您实际上并没有“将它存储在完全相同的对象中”。你所做的是混淆了 pointersobjects

让我们看看这一行:

string = [string stringByAppendingString:@"Hello"];

在这一行中,'string' 是一个指针,而不是它指向的对象。这行代码的意思是:"Object 当前被 pointer 'string' 引用,返回给我一个新的 NSString object 其文本是你的添加了此文本的文本。当我得到那个新的 NSString object 时,我命令让 pointer 'string' 指向那个 object 代替。”

关于objective-c - NSArray 和 NSString,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8364898/

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