首页 > 其他分享 >ios开发 int,NSInteger,NSUInteger,NSNumber

ios开发 int,NSInteger,NSUInteger,NSNumber

时间:2023-08-22 11:08:44浏览次数:36  
标签:NSInteger NSUInteger int value NSString NSNumber NSMutableArray

分享一下,在工作工程中遇到的一些不留心的地方:

1.当需要使用int类型的变量的时候,可以像写C的程序一样,用int,也可以用NSInteger,但更推荐使用NSInteger,因为这样就不用考虑设备是32位的还是64位的。
2.NSUInteger是无符号的,即没有负数,NSInteger是有符号的。
3.有人说既然都有了NSInteger等这些基础类型了为什么还要有NSNumber?它们的功能当然是不同的。
 NSInteger是基础类型,但是NSNumber是一个类。如果想要在NSMutableArray里存储一个数值,直接用NSInteger是不行的,比如在一个NSMutableArray里面这样用:

NSMutableArray *array = [[NSMutableArray alloc]init];
[array addObject:[NSNumber numberWithInt:88]];

ios开发 int,NSInteger,NSUInteger,NSNumber_NSInteger

这样是会引发编译错误的,因为NSMutableArray里面放的需要是一个类,但‘88’不是类。

Cocoa提供了NSNumber类来包装(即以对象形式实现)基本数据类型。
例如以下创建方法:
+ (NSNumber *) numberWithChar: (char) value;
+ (NSNumber *) numberWithInt: (int) value;
+ (NSNumber *) numberWithFloat: (float) value;
+ (NSNumber *) numberWithBool: (BOOL) value;

将基本类型数据封装到NSNumber中后,就可以通过下面的实例方法重新获取它:
- (char) charValue;
- (int) intValue;
- (float) floatValue;
- (BOOL) boolValue;
- (NSString *) stringValue;

例子:

NSNumber *num = [NSNumber numberWithInt:88];
    NSInteger integer = [num intValue];

5、NSString与NSInteger的相互转换

NSInteger integerNumber = 888;
    NSString * string = [NSString stringWithFormat:@"%d",integerNumber];
    NSLog(@"string is %@", string);    
integer = [string intValue];
    NSLog(@"integer is%d", integerNumber);

char  float等类型一样可以这样转换。


作者:稻草人11223


标签:NSInteger,NSUInteger,int,value,NSString,NSNumber,NSMutableArray
From: https://blog.51cto.com/u_13188203/7186784

相关文章

  • print eval exec repr str 转义 避免转义 转义结果
    printevalexecreprstrhttps://blog.51cto.com/u_16055028/7074038https://blog.51cto.com/u_16055028/7073380https://blog.51cto.com/u_16055028/6170218https://blog.51cto.com/u_16055028/6270476......
  • Interval GCD 题解 || WHK废物快乐题
    题意给定一个序列,需要对其进行区间加和和查询\(\gcd\)操作。思路首先看到了区间加和,自然想到是直接打懒标记,但是呢。。。\(\gcd\)具有一些特殊性,我们并不能通过向下传递标记的方式维护\(\gcd\)。于是想到昨天Tad讲树状数组区间修改的差分数组方案。我们创建一个数组......
  • InterpreterPattern-解释器模式
    在C#中,解释器模式(InterpreterPattern)是一种行为型设计模式,它定义了一种语言和解释器之间的关系,使得用户可以使用特定的语法解释表达式或操作。解释器模式有以下几个关键角色:AbstractExpression(抽象表达式):定义了解释器的抽象方法,所有具体表达式的共同父类。在C#中,可以使用抽象类......
  • SpringBoot复习:(53)TransactionInterceptor是在哪里配置的?
    我们知道SpringBoot的事务(@Transactional)最终是通过TransactionInterceptor的invoke方法调用invokeWithinTransaction方法来开启事务控制的。TransactionInterceptorbean在哪里配置的呢?在ProxyTransactionManagementConfiguration:可以看到这里创建了一个TransactionIntercept......
  • 引言(Introduction)
    1.2机器学习是什么?ArthurSamuel:他定义机器学习为,在进行特定编程的情况下,给予计算机学习能力的领域。Tom(卡内基梅隆大学)定义的机器学习是,一个好的学习问题定义如下,一个程序被认为能从经验E中学习,解决任务T,达到性能度量值P,当且仅当有了经验E后,经过P评判,程序在处理T时的性能有......
  • [Mac软件]AutoCAD 2024 for Mac(cad2024) v2024.3.61.182中文版支持M1/M2/intel
    下载地址:前往黑果魏叔官网AutoCAD是一款计算机辅助设计(CAD)软件,目前已经成为全球最受欢迎的CAD软件之一。它可以在二维和三维空间中创建精确的技术绘图,并且可以应用于各种行业,如建筑、土木工程、机械制造等领域。AutoCAD允许用户使用命令行或者图形用户界面来创建几何形状,并且可以根......
  • 面试官:String.intern() 有什么用?和常量池有什么关系?问倒一大片!
    作者:GuoMell来源:blog.csdn.net/gcoder_/article/details/1066443120.Background在JAVA语言中有8中基本类型和一种比较特殊的类型String。这些类型为了使他们在运行过程中速度更快,更节省内存,都提供了一种常量池的概念。常量池就类似一个JAVA系统级别提供的缓存。8种基本类......
  • Google classic interview questions, throwing eggs the least number of times All
    Googleclassicinterviewquestions,throwingeggstheleastnumberoftimesAllInOne谷歌经典面试题,扔鸡蛋最少次数14✅你在一栋100层的大楼里工作,你得到2个相同的鸡蛋。你需要计算出鸡蛋可以掉落到最高的楼层而不破裂。问题是你需要投掷多少次。找到一种在......
  • ffpyplayer源码编译报错:ffpyplayer/tools.pyx:182:28: Cannot assign type 'void (*)(
    编译ffpyplayer报错,具体错误如标题。  报错信息:ffpyplayer/tools.pyx:182:28:Cannotassigntype'void(*)(void*,int,constchar*,va_list)except*nogil'to'void(*)(void*,int,constchar*,va_list)noexceptnogil'  解决方法:pipinstallblos......
  • python pycharm interpreter import cv2
     在安装opencv-python,在cmd输入python,importcv2正常,在pycharm中importcv2即显示ModuleNotFoundError:Nomodulenamed'cv2',解决方法:在pycharm——file——setting——project:objname(当前项目名称)——python interpreter中选择anaconda安装目录下的python.e......