gpt4 book ai didi

ios - "const"在Objective-C和Cocos2D中 : Is It Me, 还是好像是禁忌?

转载 作者:塔克拉玛干 更新时间:2023-11-02 09:42:41 26 4
gpt4 key购买 nike

我不确定在这里问这个问题是否合适,因为这不是一个真正的技术问题,而是一个风格和编码实践的问题......

我一直热衷于使用“const”来定义在其整个生命周期内都不会改变的变量,尤其是当它们是函数/方法的参数时。这可能源于我使用 C++ 的历史,其中对象可以通过引用而不是指针传递,但是你想确保原始值不会被你或你团队中正在从事相同的代码片段。

当浏览一般的 Objective-C 和具体的 Cocos2d 的 header 时,我注意到有一个明显没有使用这个项目。现在,我不反对尽可能快地开发代码,并放弃诸如此类的约束,让开发人员可以选择在他们的代码开发和演进时修改值,但在某些情况下,我认为这种松懈不属于.

比如在Cocos2D/UIKit中,“UIFont fontWithName”方法将“(NSString *)”作为字体名称的参数:这个方法真的需要保留更改传入的原始字符串的权利吗?我个人喜欢将常量字符串定义为“const”项,并且我不喜欢在调用这些方法时必须将它们强制转换为非“const”。

传教够多了:我的问题 - 现在的方向是朝着定义不太明确的接口(interface)方向发展,还是朝着“惰性引用”方向发展(我认为这是一个贬义词)?

提前感谢您的任何反馈....

最佳答案

Const 对于 Objective C 类指针没有任何意义,因为对于 Objective C 类型,它必须以一种非常困惑的方式重载。这是因为无法像在 C++ 中那样将方法标记为 const,因此编译器永远无法强制执行它。

也就是说,在我以前的公司,我们确实使用类似这样的东西来声明全局字符串常量:

NSString* const kMyCoolString = @"Hello, world!";

关键是它至少不能被重新分配给其他东西。

Objective C/Cocoa/Foundation 中最接近的模拟是数据结构的可变/不可变版本,这对您的情况没有真正帮助。

关于ios - "const"在Objective-C和Cocos2D中 : Is It Me, 还是好像是禁忌?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24948680/

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