oc 中的id类型与类型转换

id是oc语言中一个独特的数据类型。一种通用对象类型。可以转换为任何数据类型,即id类型的变量可以存放任何数据类型的对象。

使用示例:

Animal * dog = [[Dog alloc]init];//使用父类接收子类的实例对象;
Dog * dd = (Dog *)dog;//强制转换为子类类型
[dd kanMen];//只有强制转换后才能调用子类特有的方法
id dog = [[Dog alloc]init];//创建对象dog;
[dog kanMen];//可以直接调用Dog类具有的特有方法;
[dog test];//这条狗还可以调用Dog私有的方法//只有实现没有生命的方法是私有方法;


数据类型转换

NSNumber转NSString
假设现有一NSNumber的变量A,要转换成NSString类型的B
方法如下:

NSNumberFormatter* numberFormatter = [[NSNumberFormatteralloc] init];
B = [numberFormatter stringFromNumber:A];
[numberFormatter release];

NSString和float 还有int之间的转换

NSString *tempA = @"123";
NSString *tempB = @"456";

1,字符串拼接
NSString *newString = [NSString stringWithFormat:@"%@%@",tempA,tempB];

2,字符转int
int intString = [newString intValue];

3,int转字符
NSString *stringInt = [NSString stringWithFormat:@"%d",intString];

4,字符转float
float floatString = [newString floatValue];

5,float转字符
NSString *stringFloat = [NSString stringWithFormat:@"%f",intString];
时间: 2024-09-30 21:30:23

oc 中的id类型与类型转换的相关文章

关于void*类型的用法(相当于OC中的id类型)

关于void*类型的用法(相当于OC中的id类型) 1.C++语言在对于void* 类型的使用很特别,因为void* 可以间接引用任何其他数据类型的指针,比如int*.float*甚至抽象数据类型的指针,而且可以从void* 强制转换为任何其他数据类型的指针,所以使用起来有时候会比较危险.如果开始将一个void*的指针间接引用一个float*的指针,然后将这个void*指针强制转化为一个int*类型的指针,编译器不会给出错误甚至警告,但是输出的数据却匪夷所思,如果再强制转换会float*则不会出

OC基础--构造方法 id类型

new方法实现原理: new做了三件事情 1.开辟存储空间  + alloc 方法 2.初始化所有的属性(成员变量) - init 方法 3.返回对象的地址 [Person new]; == [[Person alloc] init]; alloc: 1.开辟存储空间 2.将所有的属性设置为0 3.返回当前实例对象的地址 init:  1.初始化成员变量, 但是默认情况下init的实现是什么都没有做 2.返回初始化后的实例对象地址 注意: alloc返回的地址, 和init返回的地址是同一个地址

OC学习笔记 id类型

id是oc语言中一个独特的数据类型.一种通用对象类型.可以转换为任何数据类型,即id类型的变量可以存放任何数据类型的对象. 万能指针,能指向操作任何OC对象 id ==NSObject * 这是为什么呢?还是从OC的内部实现机制上来分析吧! 在内部处理上,id类型被定义为指向对象的指针,这可以从id的定义中看出.id在objc.h中的定义为: 1 typedef struct objc_object { 2 Class isa; 3 } *id; 而Class为typedef struct ob

OC中保存自定义类型对象的持久化方法

OC中如果要将自定义类型的对象保存到文件中,必须进行以下三个条件: 想要把存放自定义类型的数组进行 持久化(就是将内存中的临时数据以文件<数据库等>的形式写到磁盘上)必须满足: 1. 自定义对象必须要序列化(将数据有序的存放) 2. 需要使用归档来进行持久化 3. 如果要加载持久化文件需要进行反序列化(就是将有序存放的数据读取并变成自定义对象) 第一要将自定义类型序列化以及第三步并将文件反序列化必须实现OC中的  <NSCoding>协议. 以Student类为例 @interfa

黑马程序员----OC中含有BOOL类型

一.BOOL类型 OC中有布尔类型 BOOL(C语言中没有布尔类型) 二.BOOL类型的本质 typedef signed char BOOL; 三.BOOL类型的取值范围 BOOL类型的变量又2种取值:YES .NO #define YES (BOOL)1 #define NO (BOOL)0 四.代码练习: 运行结果:

OC中的Values——and——Collections

值和集合 在OC中可以使用C中的基本数据类型. 可以在类的实现里面对这些基本数据类型的属性进行C中的:++ – += -= *=等操作. 如下所示: //---------接口声明----------- @interface XYZPerson : NSObject @property int age; -(void)gettingOlder; @end //----------接口实现----------- @implementation XYZPerson -(void)gettingOld

id类型

id类型 在Objective-C 中,id 类型是一个独特的数据类型.在概念上,类似Java 的Object 类,可以转换为任何数据类型.换句话说,id 类型的变量可以存放任何数据类型的对象.在内部处理上, 这种类型被定义为指向对象的指针,实际上是一个指向这种对象的实例变量的指针. 例如,下面定义了一个id类型的变量和返回一个id类型的方法: id anObject; - (id) newObject: (int) type; id 和void *并非完全一样.下面是id在objc.h中的定义

OC中description、 SEL、类本质、self和super用法

一:description方法 description有对象方法和类方法两种,(是NSObject类的方法) 1,-description(对象方法) 使用NSLog和@%输出某个对象时,会调用对象的description方法,并拿到返回值进行输出.(系统会自动调用打印对象的description方法) 而如果打印NSString对象的话,默认返回的就是NSString字符串 2,+description (类方法) 使用NSLog和@%输出某个类时,会调用类的description类方法,并拿

OC中构造方法、自定义构造方法、id类型

一:id类型 1> id 是一种类型,万能指针,能够指向\操作任何的对象. typedef struct objc_object *id; 注意点:在使用id定义的时候,一定要注意(*)id类型默认已经包含了*所以不需要在加*; 局限性:调用一个不存在的方法,编译器会马上报错. 2>instancetype类型 (1)instancetype会让编译器检查实例化对象的准确类型 (2)instancetype只能用于返回类型,不能当做参数使用 3>.instancetype & i