gpt4 book ai didi

objective-c - 如何删除 "implicit conversion loses integer precision: ' NSInteger'(又名 'long')到 'int' 的 100 条警告“我在更新到 arm64 后收到?

转载 作者:太空狗 更新时间:2023-10-30 04:01:56 25 4
gpt4 key购买 nike

问题:

昨天我将我的一个大型项目转换为支持 arm64 之后我立即收到了 500 多个警告。其中大约 70% 是 NSInteger 被分配给 int 的地方,反之亦然,其余的是 NSUInteger 在 NSString 中格式化的地方,如下所示:

NSInteger a = 123;
NSString *str = [NSString stringWithFormat:@"Int:%d", a]; //warning: value of 'NSInteger' should not be used as formate argument; add an explicit cast to 'unsigned long' instead.

现在我知道如何手动处理它们,但这是一项艰巨的任务,非常费力。我也知道我可以将类型不匹配警告全部静音,但我不想那样做。当然,它们非常有帮助。

我尝试过的:

  1. 我已使用查找替换将 [NSNumber numberWithInt:abc]; 转换为 [NSNumber numberWithInt:(int)abc];。它修复了一些问题。
  2. 我还尝试将我所有的 int 属性更改为 NSInteger 属性但它使警告数量翻了一番(达到 900+ 次)。所以我恢复。

  3. 我也试过找一些正则表达式但是没找到适合我需要的东西。

问题:

我正在寻找正则表达式或有人尝试过的任何其他解决方法,它们可以减少手动修复它们所需的工作量。

提前致谢。

最佳答案

NSInteger a = 123;
NSString *str = [NSString stringWithFormat:@"Int:%ld", (long)a];

更新到 64 位后需要像这样进行类型转换 ((long)a)。 %d 仅适用于长整数的 32 位范围 %ld。为了更好地理解,请阅读此苹果文档。

https://developer.apple.com/library/mac/documentation/Cocoa/Conceptual/Cocoa64BitGuide/ConvertingExistingApp/ConvertingExistingApp.html

关于objective-c - 如何删除 "implicit conversion loses integer precision: ' NSInteger'(又名 'long')到 'int' 的 100 条警告“我在更新到 arm64 后收到?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30231614/

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