id类型 万能指针 oc

id类型

  1. id已经是关键字,以后定义变量要注意;
  2. id是万能指针;能指向、操作任何OC对象,没有*,因为它已经包含了*;
  3. Person *p = [Person new];可以用下面的来代替,只适用于OC对象;
  4. id d = [Person new];
  5. id 你可以认为是NSObject *
  6. 因为NSObject *o = [Person new];
  7. @property id obj;
时间: 2024-12-14 18:41:36

id类型 万能指针 oc的相关文章

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基础回顾_05 property修饰符,id类型,instancetype。。。

一.property 如果给一个属性同时提供了getter/setter方法, 那么我们称这个属性为可读可写属性 如果只提供了getter方法, 那么我们称这个属性为只读属性 如果只提供了setter方法, 那么我们称这个属性为只写属性 如果既没有提供getter也没有提供setter方法, 那么我们称这个属性为私有属性 格式: @property(属性修饰符) 数据类型 变量名称; @property(readwrite) int age; // 可读可写的 ,不用写的 默认就是这 /* -

1.5 万能指针 id

一. id id是一种数据类型,并且是一种动态数据类型 数据类型的用途: 1. 定义变量 2. 作为函数的参数 3. 作为函数的返回值 默认情况下所有的数据类型都是静态数据类型 静态数据类型的特点: 在编译时就知道变量的类型,知道变量中有哪些属性和方法 在编译的时候就可以访问这些属性和方法 并且如果是通过静态数据类型定义变量,如果访问了不属于静态数据类型的属性和方法,那么编译器就会报错 应用场景:多态,可以减少代码量,避免调用了子类特有的方法需要强制类型转换 id obj1 = [[Person

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基础5【点语法】【@property关键字】【@synthesize关键字】【id类型】【动态类型】【构造方法】

------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- [点语法] 1 1.使用“点语法” 2 Student *stu= [[Student alloc]init]; 3         //调用set方法 4         [stu setAge:20]; 5         [stu setName:@"Jone"]; 6         //点语法:xcode的特性,Xcode帮我们做了代码替换 7         //点语法,

黑马程序员————OC中点语法、id类型和构造方法

------<a href="http://www.itheima.com" target="blank">Java培训.Android培训.iOS培训..Net培训</a>.期待与您交流! ------- id:万能指针(内部已经包含*),能指向任何OC对象,只能使用于OC对象   id == NSObject * 构造方法:用来初始化对象的方法,是个对象方法,而且减号开头   init 完整地创建一个可用的对象 1.分配存储空间    +

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

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

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

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

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类具有