初识 Objective-C 面向对象

这里没有细节的语法,大都是关于Objc面向对象概念理解的东西.


1.前言 

语言本质上都是某种抽象,不管是现实生活中人们交流的语言,还是计算机语言.

 

2. 对象 

在Objective-C中,所有的对象都有一个共同的特征,就是每一个对象都包含一个isa指针.这个指针指向当前对象所属的类.


在Objective-C中存在一个名为id的类型,这个和上面所说这个isa指针有一定的联系.

 

typedef struct objc_object {
Class isa;
} *id;
 

 

其中Class类型指向objc_class结构体的指针类型.

 

这些对象在内存中都是由其地址唯一标示,所有的对象都是id类型的.

们继续来将这个isa指,通isa指可以在运行时候知道当前对象是属于什么Class的,

 

 

对象的内存管理:

在Objective-C中,存在两种内存管理的方式

一种是基于引用技的,在这种情况下,程序需要时刻注意内存的申请和释放,以免发生内存泄露.

 

还有一种是垃圾回收,学Java的同学都知道java的垃圾回收,使得程序从繁容易出的内存释放工作中得到解放.

 

目前在Pihone的开发环境中不支持垃圾回收的方式.

 

3.消息

消息这个概念是比特殊的,在其他的一般的计算机语言中都叫做方法调用或者函数调用,但在Objective-C中,很形象的叫做消息,在语法上也和别的语言的函数或者方法差别很大.

 

在我们现实生活中,人和人进行沟通就是通过不同形式的消息进行的,比如说邮件,首先得有接受者,然后将消息内容通过邮件发送给接受者.

如果将上面的情景用Objc的消息语法描述出来差不多是这样的

[邮件接受者  邮件:邮件内容]

我们将邮件接受者称为receiver,邮件:邮件内容的整体称作message

[Receiver message]

如果将message再分解,我们可以写成下面的

[Receiver selector:argument]

这种情景在别的语言中就是调用recevier这个对象的某个方法

这里的selector为方法名,他在消息发送的时候,会”选择”一个方法的实现来运行,所以这里的方法名被称作为选择器

而且这里的selector也是Objective-C实现多态的关键所在.

 

 

4.类

 

在Objective-C中,类只支持单继承.

 

在程序运行的时候,编译器会自动根据你的类定义生成一个”类对象”,这个”类对象”是类实例对象的原型,它知道如何去创建属于这个类的实例对象.

实例对象拥有各自变量属性,而方法都是共享的.

 

“类对象”的type都为Class,上面有提到过Class类型指向objc_class结构体的指针类型.

 

在Objective_C中NSObject类是一个根类

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值