3_iOS空值汇总 && 空值过滤及数据类型转换汇总 && 枚举汇总 && 随机数汇总 &&数据四舍五入汇总

一,空值汇总:

1,空值的含义


意义

例子

nil

对象为空

NSObject* obj = nil;  

Nil

类为空

Class someClass = Nil;  

NULL

基本数据对象指针为空(c语言)

int *pointerToInt = NULL

char *pointerToChar = NULL;

struct TreeNode *rootNode = NULL;

NSNull

集合对象无法包含 nil 作为其具体值,如NSArrayNSSetNSDictionary。相应地,nil值用一个特定的对象NSNull 来表示。NSNull 提供了一个单一实例用于表示集合对象属性中的的nil

NSMutableDictionary *mutableDictionary = [NSMutableDictionary dictionary];  

mutableDictionary[@"someKey"][NSNull null];

2,空值类型说明符


意义

使用场合

nonnull/nullable 

 nullable表示对象可以是 NULL  nil;而nonnull 表示对象不应该为空(其他两个类似)

对于属性、方法返回值、方法参数的修饰,使用: nonnull/nullable

_Nonnull/_Nullable

同上

对于 C 函数的参数、Block 的参数、Block 返回值的修饰,使用: _Nonnull/_Nullable

__nullable __nonnull 

同上

建议弃用 __nonnull/__nullable 

宏的使用

NS_ASSUME_NONNULL_BEGIN NS_ASSUME_NONNULL_END 。在这两个宏之间的代码,所有简单指针对象都被假定为nonnull ,因此我们只需要去指定那些 nullable 指针对象即可


二,空值过滤及数据类型转换汇总

开发中,经常要过滤空值数据,数据类型转换,在此特地在githut新建了一个项目专题(大彩蛋)点击打开链接

三,枚举汇总

1,C语言用法

1,定义枚举类型
enum Test
{
   TestA = 0,
   TestB = 1,
   TestC = 2,
   TestD = 3
};
2,定义枚举类型的同时,定义枚举变量
enum Test
{
   TestA = 0,
   TestB,
   TestC,
   TestD
} test;
3,采用typedef来定义
typedef enum _Test
{
   TestA = 0,
   TestB,
   TestC,
   TestD
} Test;
4,采用typedef匿名定义
typedef enum
{
   TestA = 0,
   TestB,
   TestC,
   TestD
} Test;
使用方法:Test test = TestB;

2,OC用法:

    1,采用NS_ENUM的一般枚举
typedef NS_ENUM(NSInteger, Test)
{
   TestA = 0,
   TestB,
   TestC,
   TestD
};
    2,采用NS_OPTIONS的移位枚举
typedef NS_OPTIONS(NSUInteger, Test) {
   TestNone = 0,
   TestA = 1 << 0,
   TestB = 1 << 1,
   TestC = 1 << 2,
   TestD = 1 << 3
};
使用:Test test = TestA | TestB;
if (test & TestA)
{
   NSLog(@"yes");
}
else
{
   NSLog(@"no");

}

四,随机数汇总

1.    srand((unsigned)time(0));  //不加这句每次产生的随机数不变
        int i = rand() % 5;      

2.    srandom(time(0));
        int i = random() % 5;

3.    int i = arc4random() % 5 ;

获取一个随机整数,范围在[from,to],包括from,包括to
 -(int)getRandomNumber:(int)from to:(int)to
{
   return (int)(from + (arc4random() % (to – from + 1)));
}
注:rand()和random()实际并不是一个真正的伪随机数发生器,在使用之前需要先初始化随机种子,否则每次生成的随机数一样。
arc4random() 是一个真正的伪随机算法,不需要生成随机种子,因为第一次调用的时候就会自动生成。而且范围是rand()的两倍。在iPhone中,RAND_MAX是0x7fffffff (2147483647),而arc4random()返回的最大值则是 0x100000000 (4294967296)。

精确度比较:arc4random()  >  random()  >  rand()。

五,四舍五入数据汇总

1,天花板函数:ceil(x)返回不小于x的最小整数值(然后转换为double型)。
2,地板函数:floor(x)返回不大于x的最大整数值。

3,四舍五入函数:round(x)返回x的四舍五入整数值。

//保留两位小数,四舍五入
    CGFloat rounded_up = round(0.355 * 100) / 100;

    NSLog(@"%.2lf",rounded_up);

//保留两位小数,直接进1(天花板函数)
    CGFloat rounded_up1 = ceilf(0.355 * 100) / 100;
    NSLog(@"%.2lf",rounded_up1);

//保留两位小数,舍弃后面所有位数。(地板函数)
    CGFloat rounded_up2 = floor(0.355 * 100) / 100;
    NSLog(@"%.2lf",rounded_up2);
阅读更多
个人分类: iOS小目标
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

不良信息举报

3_iOS空值汇总 && 空值过滤及数据类型转换汇总 && 枚举汇总 && 随机数汇总 &&数据四舍五入汇总

最多只允许输入30个字

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭