码迷,mamicode.com
首页 > 其他好文 > 详细

OC开课第一天

时间:2015-07-26 22:20:28      阅读:188      评论:0      收藏:0      [点我收藏+]

标签:

一.OC与C的对比

  • 关键字
  • OC新增的关键字在使用时,注意部分关键字以"@"开头
  • 方法->函数
  • 定义与实现
  • 数据类型
  • 新增:BOOL/NSObject/id/SEL/block
  • 流程控制语句
  • 增强for循环
  • for (NSString * name in NSArray){NSLog(@”%@”, name);}
  • 新增特性
  • 封装性
  • 继承性
  • 多态性
  • 新增语法
  • 属性生成器
  • @property声明属性
  • @synthesize合成属性
  • 分类: 扩展类,无需子类化
  • 协议: 声明方法
  • Fundation框架/Foundation.h是主头文件
  • 新增异常处理
  • @try … @catch … @finally

二.OC程序

  • OC可以兼容C
  • import 与 include
  • import会自动房子重复拷贝
  • printf 与 NSLog
  • NSLog会自动换行
  • NSLog在输出时会附加一些系统信息
  • 他们接收的参数不一样
  • NSLog打印字符串时在””前加@

三.面向对象的思想

  • 面向过程强调的是功能行为,关注的是解决问题需要哪些步骤(需要亲力亲为)
  • 面向对象强调的是具备功能的对象,关注的是解决问题需要哪些对象(不需要亲力亲为),执行者转换成指挥者

四.类与对象

  • 类(名词提炼发)的设计: 描述属性(成员变量)和行为(成员方法)
  • 类的声明:

@interface 类名 : 父类名(NSObject)

{

定义实例变量(成员变量/属性);

}

//行为声明

@end

  • 声明的目的: 告诉系统,这个类有哪些属性和行为
  • 注意
  • 类的名称首字母必须大写
  • OC类声明中属性只能写在@interface和@end之间的{}中
  • 编写OC属性时,建议将所有的属性名称前加下划线_
  • 定义行为时的注意点:
  • 谁最清楚这个行为,这个行为就属于谁
  • 类的实现:

@implementation 类名(必须和声明时的类名一模一样)

//行为实现

@end;

  • 创建对象

类名 *对象名称 = [类名 new];

  • 调用new方法就可以创建对象
  • 要具备new方法à要在类名:后面加上NSObject
  • 发送消息(调用方法)

[类名/对象名称 方法名称];

  • 调用new系统内部进行的行为
  • 为类创建出来的对象在堆中分配存储空间
  • 初始化创建出来的对象中的属性
  • 返回创建出来的对象对应的地址
  • 如果使用一个指针保存了某个对象的地址,那么我们就称这个指针为某个类型的对象
  • 每一个对象都有属于自己的属性,可以通过对象->对象成员的方式访问对象中的成员,一个对象的成员进行修改跟另一个对象无关

五.类方法和对象方法

  • 类方法
  • 特征
  • 以+开头
  • 只能由类来调用
  • 调用格式[类名 方法名称];
  • 不能访问实例变量(成员变量),因为没有创建存储空间来存储类中的成员变量
  • 类方法中不能直接调用对象方法,要想调用对象方法,必须创建或传入对象。
  • 方法中可以直接调用类方法
  • 好处
  • 节省内存空间
  • 不依赖对象,执行效率高
  • 应用场景
  • 当方法内部不需要使用成员变量时
  • 一般用于编写工具方法

ú  字符串查找

ú  文件操作

ú  数据库操作

  • 对象方法
  • 特征
  • 以-开头
  • 只能让对象调用
  • 调用格式[对象名称 方法名称];
  • 能够访问实例变量(成员变量)
  • 可以调用当前对象的对象方法,也可以调用同一类别的其他对象的对象方法(创建对象/用self)
  • 方法中可以调用类方法
  • 注意:
  • 类方法与对象方法可以同名

六.对象的存储细节

  • 对象方法调用的过程

技术分享

  • 类创建的每一个对象都占据一定的堆存储空间,并且都有一份属于自己的成员变量,方法存储在堆中的类对象中,并且在整个内存中只有一份
  • 创建对象的时候返回的地址是类的第0个属性,并不是定义的第1个属性,而是每个对象都有的isa指针.
  • isa指针是对象中的隐藏指针,存储着堆中类对象的地址
  • 通过isa指针可以在运行时知道当前对象属于哪个类

OC开课第一天

标签:

原文地址:http://www.cnblogs.com/HMJ-29/p/4678739.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!