C&C++   发布时间:2022-04-03  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了objective-c – 为什么NSNumber文字不能用于静态声明大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我宣布:
static NSString *a = @"a";

这是iOS6中的正确声明(使用编译器版本应该更正确,但目前我还不知道).我认为数字文字也是:

static NSnumber *b=@1;

可能是一个有效的声明.编译器告诉我初始化元素不是编译时常量.这让我感到惊讶.因为NSnumber是不可变的NSString,因为我在字符串的情况下使用文字,我认为它也可以是有效的.

有没有人对这种差异有合理的解释?

解决方法

第一行是编译时常量,因为你分配@“a”而不是像静态NSString * a = [NSString StringWithFormat:@“a”];(这将抛出相同的错误)

但对于NSnumber,静态NSnumber * b = @ 1;实际上相当于静态NSnumber * b = [NSnumber numberWithInt:1] ;.有关详细信息check Objective-C Literals.

请注意,在上述情况下,右侧不是编译时常量.它是一个必须在运行时计算的表达式.在C和Objective-C中,必须使用编译时常量初始化静态变量.

如果你想将NSnumber作为const,你可以检查这里提到的方法Objective C – How to use extern variables?.

也是check this on Objective C literals from Mike Ash,

和,

大佬总结

以上是大佬教程为你收集整理的objective-c – 为什么NSNumber文字不能用于静态声明全部内容,希望文章能够帮你解决objective-c – 为什么NSNumber文字不能用于静态声明所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。