OC重新开始(九)NSObject类

NSObject类

通常情况下,程序中无法使用运行时系统提供的功能,但是根类方法中提供了运行时系统的基本功能,而继承了NSObject类的所有类都可以自由的使用运行时系统的功能,简而言之根类就是运行时系统的接口

实例和类

NSObject的实例变量只有一个就是Class类型的变量isaisa用于标识实例对象属于哪个类对象,由于isa非常重要所以子类不可改变isa的值,同时也不能直接访问只能通过实例方法class来查询。

- (Class)class  返回所属类的类对象 
+ (Class)class  可以通过这个类方法获取类对象
+ (BOOL)isSubclassOfClass : (Class) aClass 判断是不是参数类本身或者子类
- (BOOL)isKindOfClass : (Class) aClass 判断是不是参数类或者子类的对象

实例对象的初始化

- (id)init  init可以对alloc的实例对象初始化
+ (void)initialize  用于类的初始化,对类中共同使用的变量进行初始化设定
+ (id)new alloc和init的组合 new方法

对象的比较

- (BOOL)isEqual:(id)anObject 如果相同返回YES

既是同一个指针指向的对象是相等的。

对象内容的描述

+ (NSString *)description 通常返回这个消息接受这所属的类

消息发送的机制

选择器以及SEL类型

程序中的方法名(选择器)在编译后会被一个内部标志符代替,对应的数据类型就是SEL类型。
在OC中为了能在程序中操作编译后的选择器,定义了@selector()指令。

@selector(compare:)

为了避免每次发送消息都要搜寻,在运行时系统内部会缓存一个散列表,表中记录着某个类拥有和什么选择器对应的方法、被定义在了何处,提高了效率,如果想更快,可以通过C中的函数,但无法使用对象的动态绑定等。

类对象以及实例对象

  1. 所有类的实例对象都可以执行根类的实例方法
  2. 所有类的类对象都可以执行根类的类方法
  3. 所有类的类对象都可以执行根类的实例方法
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值