Objective-C入门篇

Objective-C是一种面向对象的语言,根据C语言所衍生出来,继承并扩充了C语言的特性。编码风格为消息机制,且具备动态性,即消息处理到运行时才会绑定类型与消息的关系。


OC中的OOP思想

面向对象编程的思想(OOP)从面向过程编程演变而来。我们提到OOP会条件反射似得想到“封装,继承,多态”,在优化程序时需要有封装/继承实现共用功能、减少代码冗余,让程序具备易读性、扩展性、易维护。
越是基础越是需要重视。OOP是一种编程框架,要了解原理、机制、编程风格、基础概念。
*原理:以程序的数据为中心,函数为数据服务。
*机制:间接是OOP思想的核心,OOP通过间接来获取数据、调用函数,如变量、文件、参数。其他一切都是通过间接产生的引申效果,如封装、继承、多态。
*编程风格:使用封装、继承来实现有效避免冗余代码,同时坚守开放/关闭原则。

OC中的OOP思想,主要体现在处理类与对象的关系。
使用继承可以避免代码重复,但OC不支持多继承,但利用特性达到多继承的效果,如Category、Protocol。继承的工作机制中采用指针搜索,如Circle对象拥有一个指向Circle类的指针,Circle类也有一个指向其相应代码的指针,调度程序通过这些指针查找正确的代码。
OC不支持私有方法。

内存管理

内存管理属于程序设计中常见的资源管理。每个计算机系统可供程序使用的资源都是有限的,包括内存、打开的文件、网络连接等。而造成内存减少的原因有:占用内存大、内存泄露(包括经典泄露、异常未主动捕捉时泄露)。

Cocoa采用了计数的方式来管理内存(即对象的生命周期)。每个对象都维护一个保留计数器。通过alloc/new/copy创建对象(后称anc),引用计数为1,且谁创建谁释放;通过retain保留对象时,引用计数加1;使用release释放对象时,引用计数减1;当引用计数为0时,首先调用对象的dealloc方法,然后对象所占内存被回收,即对象被销毁。而非alloc/new/copy创建的对象,保留计数器的值为1并且被放入当前Runloop的AutoRelesePool,标明对象为自动释放,当Runloop结束时,Pool被销毁,Pool中的对象也被release
现已引入ARC(自动引用计数)来管理anc对象的生命周期,由编译器执行(“嘿~等等,计数不变,去自动释放池吧”),主要针对经典的内存泄露问题。由此引出强引用strong、弱引用weak/assgin。

语言特性

Property

调用对象的setter和getter方法的一种便捷方法,运行时由编译器自动生成。还可控制方法是否自动生成(@porperty/@dynamic)、加速调用速度(nonatomic)、读写权限(readwrite/readOnly)、属性特性(assign/retain/copy/strong/weak)

Category

对现有的类添加新方法,但不能添加实例变量。
利用类别有3个用途:
- 将类的实现代码分散到多个不同的文件或框架中;
- 创建对私有方法的前向引用;
- 向对象添加非正式协议(NSObject的类别称为非正式协议,任何类的对象都可以作为委托对象使用,只要实现了委托方法)

Protocol

必须实现某些方法才能获得一系列有用功能的情况下使用。需要了解声明、采用、实现的基本语法。

Block

是GCD技术的一种操作形式,在XCode的GCC和Clang工具中是有效的。GCD是一种系统级别的技术,用来处理多核编程的负担,便于线程管理。 GCD通过调度队列(dispatch_queue)决定线程的数量、顺序、进度。我们需要提供代码块或函数作为线程来运行。

FoundationKit

包含了基础数据类和集合类。
*基础类型:NString(比较、检索、可变性)、NSNumber、NSValue、NSNull、NSDate…NSRange、CGPoint、CGSzie、CGRect
*集合:NSArray、NSDictionary、NSSet

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值