0

我正在为一个 Objective-C 项目编写一系列匿名函数(即这些函数不是特定于类/实现是隐藏的),我遇到了一个有趣的问题......

我有一个宏函数: div(c)((CGFloat)c/255.0f) 这种用法几乎总是类似于 div(0.0f),但其他人可能不知道它需要一个浮点数,所以 div(0) 是可能的

我的问题是:当变量被显式转换并且变量与转换的类型相同时,转换是否会损失任何性能?

4

2 回答 2

1

强制转换是一个承诺,不是数据类型,不是方法,也不是扩展。你只是让编译器对一个类型感到舒服。没有什么应该改变执行,因此没有什么可以优化执行。如果你担心你请求的参数的类型,你总是可以在操作之前明确地将它存储在不同的 CGFloat 中。

于 2013-01-02T22:44:46.397 回答
0

机器使用内存。最后,您使用的所有变量都只是原始字节。

那么为什么 Objective-C 有类型呢?在编译时保护程序员,显示错误和警告。

在运行时,您所做的所有操作都是在内存上进行的,因此您无需担心强制转换的开销。

于 2013-01-02T22:56:50.777 回答