解析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之后,都能够完整的强转回去吗