gpt4 book ai didi

ios - 关于Objective-C的编程概念

转载 作者:行者123 更新时间:2023-12-01 17:25:47 25 4
gpt4 key购买 nike

我对编程感到困惑。如果在objective-c中执行此操作,则对内存有何影响:

+(NSString *)getName {
NSString *name = @"Hello";
return name;
}

OR

+(NSString *)getName {
return @"Hello";
}

两者在速度和性能上是否相同?

最佳答案

编译器会将第一个示例优化为第二个示例,因为该变量未用于其他任何用途。因此它们是等效的:没有一个更快,没有一个可以节省任何内存。

编辑:

因此,我实际上尝试过并比较了汇编程序的输出。

使用的代码:

@implementation Test

- (NSString *)test1 {
NSString *variable = @"Hello1";
return variable;
}

- (NSString *)test2 {
return @"Hello2";
}

@end

使用的编译器:

Apple LLVM版本5.0(clang-500.2.79)(基于LLVM 3.3svn)目标:
x86_64-apple-darwin13.0.0

如果不进行优化( -O0), test1确实具有未使用变量的代码( movq %rax, -24(%rbp)movq -24(%rbp), %rax,因此需要写和读一个额外的内存)。但是已经在 -O1处对变量进行了优化(就像读取内部 self_cmd变量一样)。

因此,换句话说:对于 -O0(无优化), test1确实比 test2慢。但是,如果启用了优化,则它们是等效的,并且会产生相同的代码。

关于ios - 关于Objective-C的编程概念,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21551675/

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