zoukankan      html  css  js  c++  java
  • OC基础(1)

    Objective-C简介

    本小节知识点

    1. Objective-C简介
    2. Objective-C发展现状
    3. Objective-C语言学习路线及重难点

    1.Objective-C简介

    • Objective-C是一种面向对象的计算机语言
    • 1986年,Brad Cox(布莱德·考克斯)在第一个纯面向对象语言Smalltalk基础上写成了Objective-C语言。
    • 1985年,被赶出苹果公司的Steve Jobs成立了NeXT公司,致力于开发强大且经济的工作 站。NeXT选择Unix作为其操作系统
    • 1988年Steve Jobs获得了Objective-C的使用版权,使用Objective-C来编写NeXTSTEP操作系统 , Objective-C使得设计NeXTSTEP操作系统更加容易
    • 1994,NeXT与Sun共同制定OpenStep API标准,其中两个重要的部分是Foundation跟 Application Kit,此时开始使用命名前缀NS。 在1995年,NeXT从Stepstone得到了Objective-C全部版权
    • 1996 Steve Jobs重回苹果公司,把OpenStep用于 Mac OS X操作系统开发,它的版本和开发环境叫Cocoa,使用 Objective-C作为基础语言,开发工具Xcode和Interface Builder。 2007 苹果公司推出Objective-C 2.0,Objective-C是Mac OS X和 iOS开发的基础语言。

    README_20150527171056

    OC和C对比

    本小节知识点

    1. 源文件对比
    2. 关键字对比
    3. 数据类型对比
    4. 流程控制语句对比
    5. 函数(方法)定义和声明对比
    6. 面相对象新增特性
    7. 面向对象新增语法
    8. 新增异常处理

    1.源文件对比

    • C语言中常见源文件.h头文件,.c文件
    文件扩展名源类型
    .h 头文件,用于存放函数声明
    .c C语言源文件,用于实现头文件中声明的方法
    • OC中的源文件.h头文件,.m与.mm的实现文
    文件扩展名源类型
    .h 头文件,头文件包含类、方法、属性的声明。
    .m/.mm 类的实现文件,参与编译的文件,用来实现类中声明的方法

    2.关键字对比

    • C语言的关键字都可以在OC源程序中使用
    • OC新增的关键字在使用时,注意部分关键字以"@"开头

    3.数据类型对比

    • C语言数据类型
    • OC数据类型
    类型描述
    BOOL OC中的对象类型
    NSObject *  
    id 动态对象类型,万能指针
    SEL 选择器数据类型
    block 代码块数据类型
    • OC中的类
      • Objective-C是一种面向对象的语言,定义类是它的基本能力。
      • 那什么是类呢?类是用来描述对象的,它是一系列方法和属性的集合
      • Objective-C的类声明和实现包括两个部分:接口部分和实现部分。
      • 想要定义方法也就C语言中的函数,那么就必须先有类的存在

    4.流程控制语句对比

    • C语言中使用的流程控制语句OC中都可以应用 if 语句 switch语句 while语句 dowhile语句 for语句 break关键字 continue关键字
    • 增强for循环,用于快速迭代数组或者集合

    • C语言for循环 for (int i = 0; i < 10; i++){ printf(“%d”,i); }

    • OC增强for循环 for (NSString * name in NSArray){ NSLog(@”%@”,name); }


    5.函数(方法)定义和声明对比

    • C语言中函数的声明和实现

      • 函数声明:int sum(int a,int b);
      • 函数实现:int sum(int a,int b){ return a+b; }
    • OC中的方法

      • 方法声明:-(int)sum:(int) a and:(int) b;
      • 方法实现:-(int)sum:(int) a and:(int )b{ return a+b; }
    • 注意: 方法只能写在类里面, 而函数可以写在任何地方

      • 对象方法,使用对象调用的方法 对象方法 - (id)initWithString: (NSString * )name;
      • 类方法,使用类名调用的方法 类方法 + (MyClass *)createMyClassWithString: (NSString *)name;

    6.面相对象新增特性

    • 封装性
    • 继承性
    • 多态性

    7.面向对象新增语法

    • 属性生成器
      • @property
      • @synthesize
      • //声明属性@property (nonatomic,strong)NSString * name;

        //合成属性 @synthesize name = _name;

    - 分类 + 分类与继承 + 使用分类扩展类,无需子类化

    @interface NSString (MyNSString)

    -(NSString *) encryptWithMD5;

    @end

    - 协议 + 使用协议声明方法 + 协议类似于C#,java中的接口

    @protocol MyProtocol

    (void)myProtocolMethod;

    @end

    • Fundation框架
      • 创建和管理集合,如数组和字典
      • 访问存储在应用中的图像和其他资源
      • 创建和管理字符串
      • 发布和观察通知
      • 创建日期和时间对象
      • 操控URL流
      • 异步执行代码

    8.新增异常处理

    • 用于处理错误信息
    • 格式:

      • @try .... @catch .... @finally
    • 示例

    • //创建对象car Car *car = [Car new];

    • @try { //调用一个没有实现的方法 [car test]; }

    • @catch (NSException *exception) { NSLog(@"%@",exception.name); }

    • @finally { NSLog(@"继续执行! "); }

    第一个OC程序

    本小节知识点

    1. 如何创建Objective-C项目
    2. #import和#include区别
    3. NSLog 和printf区别

    1.如何创建Objective-C项目

    • 创建工程  

    • 查看结果运行结果 


    2.#import和#include区别

    • #import与#include的类似,都是把其后面的文件拷贝到该指令所在的地方
    • #import可以自动防止重复导入
    • #import <> 用于包含系统文件
    • #import用于包含本项目中的文件

    • #import <Foundation/Foundation.h>, 告诉编译器找到并处理名为Foundation.h文件,这是一个系统文 件,#import表示将该文件的信息导入到程序中。

    • 框架地址: /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneO S.sdk/System/Library/Frameworks/


    3.NSLog 和printf区别

    • NSLog是Foundation框架提供的Objective-C日志输出函数,与标准C中的printf函数类似,并可以格式化输 出。

    • NSLog声明在NSObjCRuntime.h中

      • 声明:void NSLog(NSString *format, ...);
      • 基本上,NSLog很像printf,同样会在console中输出显示结果。不同的是,传递进去的格式化字符是NSString的对象,而不是char *这种字符串指针

    面向对象思想

    本小节知识点

    1. 面向对象基本概念
    2. 面向对象和面向过程区别

    1.面向对象基本概念

    • 面向对象(Object Oriented,OO)是软件开发方法
    • 面向对象是相向对象是一种对现实世界理解和抽象的方法,是计算机编程技术发展到一定阶段后的产物。
    • Object Oriented Programming- OOP ——面向对象编程


    2.面向对象和面向过程区别

    • 面向对象是相对面向过程而言
    • 面向对象和面向过程都是一种思想
    • 面向过程
      • 强调的是功能行为
      • 关注的是解决问题需要哪些步骤
    • 面向对象

      • 将功能封装进对象,强调具备了功能的对象
      • 关注的是解决问题需要哪些对象
    • 示例

    • 把衣服放进洗衣机

      • 面向过程

        • 打开洗衣机
        • 放进去衣服
        • 关闭洗衣机
      • 面向对象

        • 洗衣机-打开
        • 洗衣机-存储
        • 洗衣机-关闭
    • 现实生活中我们是如何应用面相对象思想的

      • 想打电话发短信
      • 去饭店吃饭
      • 汽车坏了
      • 买电脑
      • 包工头
      • 女朋友
      • 面试

  • 相关阅读:
    洛谷P3224 [HNOI2012]永无乡 线段树合并
    洛谷P3605 [USACO17JAN]Promotion Counting——线段树合并
    python之三元表达式、列表推导、生成器表达式、递归、匿名函数、内置函数
    python之迭代器、生成器与面向过程编程
    Python之函数对象、函数嵌套、名称空间与作用域、闭包函数、装饰器
    Python之函数基础
    Python之字符编码与文件操作
    Python基本数据类型
    python介绍
    编程基础
  • 原文地址:https://www.cnblogs.com/zhoudaquan/p/5014604.html
Copyright © 2011-2022 走看看