OC开课第一天

一.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指针可以在运行时知道当前对象属于哪个类
时间: 2024-10-13 13:11:16

OC开课第一天的相关文章

oc学习第一天

OC第一天 2016-3-14 eg :1 #import <Foundation/Foundation.h> //在OC中包含头文件使用 #import //#import <Foundation/Foundation.h> 表示是:包含的是Foundation 框架中的Foundation.h //NSObject:OC的根类 //OC实现文件的后缀名为.m //总结系统内部的类和方法的特点 int main(int argc, const char * argv[]) { @

2016.7.20开课第一天

今天,课程开课,老师讲了未来4个多月的学习纲要.时间说长不长说短不短,再未来的时间里,应该认真努力,大胆细心,路要一步一步走,走结实! 今天学的进制转换: 二进制是计算技术中广泛采用的一种数制.二进制数据是用0和1两个数码来表示的数.它的基数为2,进位规则是“逢二进一”,借位规则是“借一当二”. 十进制整数转二进制数:“除以2取余,逆序排列”(除二取余法).二进制转十进制(a*2的0次方+b*2的1次方+c*2的2次方+...+m*2的(n-1次方).

【干货】马哥linux运维学院公开课-第一季

一大波高质量Linux运维和自动化运维公开课正在来袭,你准备好了么? 2016为了感谢广大同仁对马哥linux运维学院的支持,经过内部商讨,特推出一系列公开课来助力大家在职场中的发展!接下来就跟随小编来瞧瞧马哥linux运维学院都为大家呈上了一份什么样的神秘干货大礼包??? 想要参加公开课的小伙伴们请加群:339184057公开课报名链接:http://ke.qq.com/course/119808 课程详情 O2O业务的运维挑战和解决之道 AWK企业实战案例分享 深入浅出三剑客-grep/se

oc基础第一天---c语言和oc语言的对比

/* 1. OC程序的编译. 它的编译.连接.执行和C程序是相差无几的. 1). 在.m文件中写上符合OC语法规范的源代码. 2). 使用 cc -c 指令来编译我们的文件. a. 预处理. b. 检查语法 c. 生成.o的目标文件. 3). 链接 cc xx.o a. 添加启动代码. b. 链接函数. 将要调用的函数的实现拷贝进来 在代码中如果使用到了框架中的功能  就必须要指定系统到那1个框架中去找. cc main.o -framework Foundation 4). 链接完毕之后 会生

oc基础第一天---类的方法,类与对象

1. 如何为类定义行为. 刚刚我们聊的是如何为类定义特征. 如何定义行为? 行为就事1个功能 也就事1个函数. OC中把行为叫做方法. 实际上和函数是一样的 代表1个功能模块. 2. 为类定义无参数的方法. 类的方法也分为两个部分. a. 方法的声明 1). 位置: 写在声明类的大括弧的外边. 2). 声明的语法: - (返回值类型)方法名; - (void)sayHi; 这个方法的名字就叫做sayHi; b. 方法的实现. 1). 位置: 写在类的实现之中. 2). 实现的语法: - (返回值

oc基础第一天

一 . 基础oc语法 1. 源文件后缀名 C程序的源文件的后缀名为.c OC程序的源文件的后缀名为.m   message. 消息机制. OC是完全兼容C语言的. 所以在.m文件之中是可以写任意的C代码的 .m文件中. 可以写OC代码.C代码.C++代码. 2. main函数仍然是OC程序的入口和出口. 返回值代表程序的结束状态. 参数可以接收用户的数据. 也可以不带参数. 3. #import指令. 1). 这是1个预处理指令. 会在编译之前执行. 2). 作用: 是#inlcude指令的增强

韩顺平_PHP程序员玩转算法公开课(第一季)01_算法重要性_五子棋算法_汉诺塔_回溯算法_学习笔记_源代码图解_PPT文档整理

文西马龙:http://blog.csdn.net/wenximalong/ 课程说明:算法是程序的灵魂,为什么有些网站能够在高并发,和海量吞吐情况下依然坚如磐石,大家可能会说: 网站使用了服务器集群技术.数据库读写分离和缓存技术(比如memcahced和redis等),那如果我再深入的问一句,这些优化技术又是怎样被那些天才的技术高手设计出来的呢? 我在上大学的时候就在想,究竟是什么让不同的人写出的代码从功能看是一样的,但从运行效率上却有天壤之别, 就拿以前在软件公司工作的实际经历来说吧, 我是

黑马程序员--oc基础第一篇

一.oc的基础知识 1.oc的源代码的扩展名为:“.m” 2.不再用include了,改用#import<Foundation/foundation.h>,区别就是import自动检查是否包含了相同的头文件,不需要再在c语言中用IFDef了. 3.类的声明用@interface @end,将声明代码写在两部分之间. 4.BOOL 类型的实质为char typedef signed char BOOL: #define Yes (BOOL) 1 #define No (Bool) 0 5.在oc

OC入门第一课

hello.m(implementation)  hello.c #import <Foundation/Foundation.h>  引入头文件 #include <F--> import是include的加强版,预处理只要预处理一次 编译链接:clang hello.m -framework Foundation (-fobjc-arc 用自动引用计数编译)//终端默认为手动引用计数 (-fno-objc-arc 用手动引用计数编译) 类的声明:只能声明方法和变量(可以用汉字,