3_iOS干货2_iOS空值汇总+空值过滤及数据类型转换汇总+枚举汇总+随机数汇总 +数据四舍五入汇总+尔值汇总

一,空值汇总:

1,空值的含义

 

 

意义

例子

nil 

对象为空(oc对象字面0值)

NSObject* obj = nil;  

Nil

类为空(oc类字面0值)

Class someClass = Nil;  

NULL

基本数据对象指针为空(c语言指针字面0值)

int *pointerToInt = NULL;

char *pointerToChar = NULL;

struct TreeNode *rootNode = NULL;

NSNull

集合对象无法包含 nil 作为其具体值(【NSNull null】,表示0值的单独对象),如NSArray、NSSet和NSDictionary。相应地,nil值用一个特定的对象NSNull 来表示。NSNull 提供了一个单一实例用于表示集合对象属性中的的nil值

NSMutableDictionary *mutableDictionary = [NSMutableDictionary dictionary];  

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

 

    注:结构体判断为空( 1,rect结构体用CGRectEqualToRect(rect, CGRectNull)判断;

                                   2,自定义结构体用其中元素是否为默认值来判断 )

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);

六,布尔值汇总

 

名称定义头文件真值   假值
BOOLsigned charobjc.hYESNO
bool_Bool (int)

stdbool.h

truefalse
Booleanunsigned charMacTypes.hTRUEFALSE
NSNumber__NSCFBooleanFoundation.h@(YES)@(NO)
CFBooleanRefstructCoreFoundation.hkCFBooleanTruekCFBooleanFalse

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值