解析IOS对象指针和基础数据类型的强转

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了解析IOS对象指针和基础数据类型的强转相关的知识,希望对你有一定的参考价值。

参考技术A

  本文主要介绍了ios中对象指针和基础数据类型如何进行强转,下面话不多说,直接来看示例详解。

  一、对象指针的强转:

  UIView *view = [UIView new];//new一个UIView类的对象UILabel *label = (UILabel *)view;//强转成UILabel指针label.text = @"123";//给label的text属性赋值(调用label的setText方法)

  上述代码会产生崩溃,崩溃信息如下:

  -[UIView setText:]: unrecognized selector sent to instance 0x7ff1e14e03a0

  总结:强转对象指针不会改变内存里存储的对象类型,原本是什么类的对象,强转后并不会发生改变,只是能方便调用强转到的类中的方法和属性。

   二、C基础数据类型的强转:

  float weight = 60.12;NSLog(@"%d",(int)weight);

  打印的信息为:60

  则强转修改了原来的\'值:0.12被舍弃

  int height = 70;NSLog(@"%f",(float)height);

  打印的信息为:70.000000

  在原来值的基础上多加了.000000成为float类型,也许只是强转之后能用%f正确打印height的值了

  因为

  int height = 70;NSLog(@"%f",height);

  打印的信息为:0.000000

  此处对C基础数据类型强转的探索仅供参考。


(10)数据类型的强转

通过数据间的强制转换可以方便的拿到我们需要的数据类型,例如,我们我们需要列表[1,2,3]样式的数据,但有时候
拿到的却是(1,2,3)这样的数据类型,这时候就可以通过强转来实现

-->Number 部分(可以强转的类型)

int :        整型   浮点型 布尔类型  纯数字字符串

float:      整型   浮点型 布尔类型  纯数字字符串

complex:   整型   浮点型 布尔类型  纯数字字符串 (复数)

bool:       ( 容器类型数据  /  Number类型数据 都可以 )

重点:默认bool是False的十种数据:0, 0.0 ,0j , (), ‘‘ ,[], set() ,{}, None, False

-->容器类型部分
str: ( 容器类型数据 / Number类型数据 都可以 )
list: 字符串 列表 元组 集合 字典
tuple: 字符串 列表 元组 集合 字典
set: 字符串 列表 元组 集合 字典 (注意:相同的值,只会保留一份)
dict: 使用 二级列表 或 二级元组 (二级集合语法上不错,但是无序,不建议使用)

下面是一些例子,可以自己复制回去打印,看结果
# Number 数据类型的强制转换 var1 = 45 var2 = 6.78 var3 = "12345676" var4 = "nihao223" var5 = 88-2j var6 = True var7 = False # int 强制类型转换整型 True 强转int是1 False 强转int 是0 res = int(var2) res = int(var6) res = int(var7) res = int(var3) # res = int(var4) error # res = int(var5) error print(res) # float 强制转换成浮点型 res = float(var1) res = float(var3) res = float(var6) res = float(var7) print(res) # complex 强制转换成复数 res = complex(var1) res = complex(var2) res = complex(var3) res = complex(var6) res = complex(var7) print(res) # bool 强制转换成布尔类型 ***** res = bool(var1) res = bool(var4) res = bool(var5) res = bool({1,2,3}) res = bool(None) print("<===>") print(res) # 通过bool强制转换为假的10个数据 ***** ‘‘‘ 0 , 0.0 , 0j ,False , [] ,() , "" ,set() ,{} , None None 是一个关键字 本身代表空的 什么也没有 ‘‘‘ age = None sex = None ‘‘‘ int() float() bool() complex() 默认声明一个当前类型的数据 ‘‘‘ a = int() b = float() c = bool() d = complex() print(a,b,c,d)

  

以上是关于解析IOS对象指针和基础数据类型的强转的主要内容,如果未能解决你的问题,请参考以下文章

Java 所有对象强转到Object之后,都能够完整的强转回去吗

Java 所有对象强转到Object之后,都能够完整的强转回去吗

JSONObject能不能强转成String类型?

PowerBuilder里String类型怎么强转成Time类型还有Int类型

“+=”消除格式的强转问题

iOS中的强代理(strong delegate)