A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© hezerongrocky 中级黑马   /  2016-2-24 02:24  /  739 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文



id和void *并非完全一样。在上面的代码中,id是指向struct objc_object的一个指针,这个意思基本上是说,id是一个指向任何 一个继承了Object(或者NSObject)类的对象。需要注意的是id是一个指针,所以你在使用id的时候不需要加星号。比如id foo=nil 定义了一个nil指针,这个指针指向NSObject的一个任意子类。而id *foo=nil则定义了一个指针,这个指针指向另一个指针,被指向的这个 指针指向NSObject的一个子类。

nil和C语言的NULL相同,在objc/objc.h中定义。nil表示一个Objctive-C对象,这个对象的指针指向空(没有东西就是空)。

首字母大写的Nil和nil有一点不一样,Nil定义一个指向空的类(是Class,而不是对象)。

SEL是“selector”的一个类型,表示一个方法的名字

Method(我们常说的方法)表示一种类型,这种类型与selector和实现(implementation)相关

IMP定义为 id (*IMP) (id, SEL, …)。这样说来, IMP是一个指向函数的指针,这个被指向的函数包括id(“self”指针),调用的SEL(方法名),再加上一些其他参数.说白了IMP就是实现方法。

2 个回复

倒序浏览
谢谢分享!
回复 使用道具 举报
在這邊說明一下~

簡單的一句話說明

id 表示指向一個任何繼承了 NSObject 的對象
這邊要注意的是 id  是一個指針 ,所以使用他的時候不用添加星號(*)

而 nil  所表示說 這個對象沒有東西。
回复 使用道具 举报 1 0
您需要登录后才可以回帖 登录 | 加入黑马