Objective-C入门

本文介绍了Objective-C的基础知识,包括面向对象编程概念、类、消息传递、字符串、数据类型如NSNumber、NSArray、NSDictionary和NSDate的使用,以及copy、strong属性、协议、Runtime等。Objective-C是C语言的超集,采用引用计数管理内存,使用消息传递进行方法调用,通过协议实现多态。同时,文章还探讨了BOOL型陷阱和NSInteger与int的区别。
摘要由CSDN通过智能技术生成

介绍

  • Objective-C是C语言的严格超集,也就是在OC中使用C语言的语法是合法的。OC原意就是在C语言上加入面向对象的特性。
  • 文件扩展名:.h | .m | .mm。.m可以包含oc和c代码;.mm可以包含oc/c/C++代码。
  • 部分C语言的合法代码是在oc中的意义不一定相同。
  • OC中采用引用计数的方式进行内存管理,所以不需要使用malloc和free。

对象(object)就是“基本构造单元”(building block),开发者通过对象来存储并传递数据。在对象之间传递数据并执行任务的过程就叫做“消息传递”(Messaging)。当程序运行起来以后,为其提供支持的代码叫做“Objective-C运行期环境”(Objective-C runtime),它提供了一些使得对象之间能够传递消息的重要函数,并且包含创建类实例所用的全部逻辑。

——《Effective Objective-C 2.0》

面向对象编程

面向对象编程(Object-Oriented Programming)的首字母缩写为 OOP,这是以一种编程技术,是为了编写模拟程序而开发的。OOP 是一种编程架构,可构建由多个对象组成的软件。
OOP 的一个关键概念 -> 间接:在代码中通过指针间接获取某个值,而不是直接获取。间接是 OOP 的核心,OOP 使用间接来调用某个函数,而不是直接调用。

类(class):是一种表示对象类型的结构体。对象通过它的类来获取自身的各种信息,尤其是执行每个操作需要运行的代码。
对象(object):是一种包含值和指向其类的隐藏指针的结构体。
实例(instance):是对象的另一种称呼。
消息(message):是对象可以执行的操作,用于通知对象去做什么。
方法(method):是为了响应消息而运行的代码。
方法调度(method dispatcher):是 Objective-C 的一种机制,用于推测执行什么方法以响应某个特定的消息。
接口(interface):是类为对象提供的特性描述。
实现(implementation):是使接口能正常工作的代码。

作者:Junexx
链接:https://www.jianshu.com/p/2929e16d3971
来源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。

指针和堆栈

  • OC中指针是用来指示对象的。如NSString str = @“it is a string”;
  • 对象存放在堆中,而指针存放在栈中,指针实际上就是指向对象在堆中的内存地址。

在OC中,有时会遇到不含*的变量,他们可能会使用栈空间。比如CoreGraphics框架中的CGRect:

CGRect frame;
frame.origin.x = 0.0f;
frame.origin.y = 10.0f;

在这里,CGRect是C语言中的结构体,并不是OC中的类,所以不需要使用*来定义。

使用结构体的好处是性能高。创建对象需要额外的开销,例如分配和释放堆内存。如果只是需要保存int、float等非对象类型,那么通常使用结构体更合适。

消息传递模型

  • 在OC中,可以用消息传递来描述对象之间的方法调用。
  • 调用方法视为给对象发送消息。
  • 所有方法视为对消息的回应。
  • 一个类别不保证一定会回应收到的消息,如果类别收到了一个无法处理的消息,程序只会抛出异常,不会出错或崩溃。

OC中调用方法的方式:

[object method: arguement]

发送消息给不存在的方法:

[car fly]

如果car类别阿中定义了fly方法便执行fly,若car不存在fly方法,则程序依旧可以通过编译,但在运行期会抛出异常。

理解:fly是消息,car是消息的接收者,car收到消息后决定如何回应这个消息

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值