gpt4 book ai didi

objective-c - 理解 Objective-C 中的实例化

转载 作者:搜寻专家 更新时间:2023-10-30 19:52:31 25 4
gpt4 key购买 nike

我目前正在尝试通过阅读书籍和在线教程来学习 Objective-C,还引用了 Apple 文档,但有些东西就是不合时宜。我有一个关于类的问题,我已经使用 NSString 一段时间了,并没有过多关注它的使用方式。

我的印象是,为了让某人能够使用 Objective-C 中某个类的方法,您首先需要实例化它,比如……

ClasssName *varName = [[ClassName alloc]init];

然后你会调用像...这样的方法

[varName someMethod];

但是看看 NSString 的使用方式,我现在有点困惑,例如这是我们通常使用它的方式......

NSString *someString = @"some text here";
[someString stringByAppendingFormat: @"some text = %d", 3];

根据我读到的有关类的内容,我们需要改为执行以下操作。

NSString *someString  =  [[NSString alloc]initWithString: @"some text here"];
[someString stringByAppendingFormat: @"some text = %d", 3];

有人可以解释为什么有些类在使用其方法之前不需要实例化吗?

最佳答案

Objective-C 知道一些称为文字的缩写。编译器知道特殊符号。字符串文字被编译成二进制文件并在应用程序的整个生命周期中退出。

在大多数情况下,它的行为类似于在运行时创建的对象。

  • 如果两个字面量相同,则只会创建一个对象并永远存在
  • 如果您创建 NSString *string = [[NSString alloc] initWithString:@"My String"]; 之前将 @"My String" 用作文字, string 也可以指向它。

因为 Apple LLVM 编译器 4.0 Objective-C 知道一些 more literals .但与字符串文字相比,这些文字是在运行时通过方便的初始化程序创建的。


注意

[someString stringByAppendingFormat:  @"some text = %d", 3];

不改变 someString。它返回一个新的字符串对象。

NSString *newString = [someString stringByAppendingFormat:  @"some text = %d", 3];

关于objective-c - 理解 Objective-C 中的实例化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14198650/

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