OC - 2.OC基础知识介绍

一、基础语法

1> OC语言和C语言

  • C语言是面向过程的语言,OC语言是面向对象的语言
  • OC语言继承了C语言,并增加了面向对象的思想
  • 以下内容只介绍OC语言与C语言的不同之处

2> 关键字

  • 以字母或下划线开头

3> 字符串

  • OC语言有自己特有的字符串,,区别于C语言字符串

4> BOOl类型

  • 只有YES和NO两种取值
  • 本质上是char类型,但理解为整型
  • BOOL类型是由 条件编译机制引进的

5> #import与#include

  • 都是将文件内容拷贝到指令出现的代码行
  • 系统文件用尖括号,用户自定义的文件用圆括号
  • #import包含的文件中有条件编译指令,可以防止文件被多次拷贝

6> NSLog与printf

  1. NSLog

    ① NSLog函数包含在Foundation框架中
    ② NSLog函数接收的是OC语言字符串
    ③ NSLog函数默认在结束处输出换行
    ④ NSLog函数不能以%s格式输出包含中文的字符串
     
  2. printf
    ① printf函数包含在stdio.h文件中
    ② printf函数接收的是C语言字符串
    ③ printf函数需要使用换行符‘\n‘
  3. NSLog的其他用途
    ① 通过_LINE_参数输出改代码所在的行号
    ② 通过_FILE_参数输出改代码所在的文件的文件名
    ③ 通过_func_参数输出代码所在的函数的函数名

二、类、对象和方法

1> 类

  1. 类与结构体

    ① 结构体是数据的封装
    ② 类是数据及与数据相关操作的封装
  2. 类的声明
    ① 用@interface和@end组合来声明一个类,通常继承与根类NSObject
    ② 指定类名:首字母大写,使用驼峰标示,不包含数字
    ③ 声明属性列表:以下划线开头,可以与get方法的名称区分开
    ④ 声明方法列表:包括类方法和对象方法
  3. 类的实现
    ① 用@implementation和@end组合来实现类
    ② 实现类声明中的方法列表
    ③ 类的实现也可以定义实例变量,通常不这样定义
    ④ 实现未声明的类会发出警告
  4. 类的本质
    ① 类本质上也是一个对象,是class类定义的对象,称为类对象
    ② 使用class方法可以获取类对象
    ③ 每个类中都会有一个superclass指针指向其父类
  5. 类的加载和初始化
    ① 加载
        1)类在使用之前会被加载至内存,加载完毕调用+(void)load方法
        2)所有的类只会被加载一次
        3)方法会在类加载的同时被加载
        4)某个类定义的所有对象的isa指针都指向内存中该类的唯一副本
        5)首先加载父类,其次是子类,最后是分类
    ② 初始化
        1)类在使用时才会调用initialize方法初始化
        2)没有使用的类不会调用initialize方法
        3)首先调用父类的初始化方法,其次是子类
  6. 类的使用注意
    ① 类的声明和实现必须成对出现
    ② 类不能嵌套声明和实现
    ③ 成员变量不能在定义的时候初始化,也不能直接使用
    ④ 成员变量不能用static等关键字修饰
    ⑤ 访问没有的成员变量会报错
    ⑥ 成员变量必须写在大括号内,方法列表不能写在大括号内
    ⑦ 类的声明必须出现在使用之前
  7. @public、@protected、@
    ① @public修饰的成员变量在任何地方都可以直接访问
    ② @protected修饰的成员变量可以在当前类以及子类的对象方法中直接访问,默认为该类型
    ③ @private修饰的成员变量只能在当前类的对象方法中直接访问,在实现中声明的成员变量默认为该类型
    ④ @package修饰的成员变量在同一个“体系内”(框架)可以访问,
      介于@private和@public之间

2> 对象

  1. 对象与类

    ① 类是具有相同或相似属性和操作的对象的抽象;对象是类的一个实例,是类通过调用一定的方法创建的
    ② 类本身会占用内存空间,包含所有的方法列表
    ③ 类的成员变量不会占用内存空间,只有在定义对象时才会分配存储空间
  2. 对象的本质
    ① 本质上,我们研究的一切事物皆是的对象,包括具体事物和抽象事物
    ② 每个对象总会携带它的isa成员,指向该对象的类
    ③ 系统总会携带对象的相关信息
  3. 对象的创建和初始化
    ① 初始化方法通常用init开头
    ② 类方法alloc和init完成对象的创建和初始化
    ③ 类方法new可以代替alloc和init完成对象的创建并初始化
    ④ 在对象的初始化时会加载一次类,返回一个该类型的指针
  4. 匿名对象
    ① 每次创建的匿名对象都是不同的对象
    ② 匿名对象会造成内存泄露,尽量不要创建类似匿名对象的对象

3> 方法

  1. 方法的定义

    ① 返回值类型:指定函数返回值的类型
    ② 参数列表:多个参数用冒号及冒号前的描述隔开
    ③ 方法名:在有参数列表的方法中,方法名包括冒号及冒号前的描述
  2. 类方法
    ① 以加号(+)开头
    ② 只能通过类名调用,可以在中括号内调用
    ③ 不能访问实例变量
    ④ 当不需要访问成员变量的时候通常使用类方法
    ⑤ 工具类的方法通常为类方法
  3. 对象方法
    ① 以减号(-)开头
    ② 只能通过对象调用,可以在中括号内调用
    ③ 对象方法能访问实例变量
  4. 方法的使用注意
    ① 方法不能独立与类而存在
    ② 方法有声明就必须有实现,否则会报错
    ③ 方法只有实现,没有实现,仍然能够调用,但是会发出警告
    ④ 访问没有的方法会警告
    ⑤ 类方法可以和对象方法同名
    ⑥ 方法不能用static等关键字修饰
    ⑦ 带参数的方法,一个参数对应一个冒号,通常在每个冒号前写描述
  5. 方法与函数的区别
    ① 函数的定义可以出现在文件的任意位置,方法只能出现在@implementation和@end之间
    ② 函数归文件所有,方法归类/对象所有
    ③ 方法通过类/对象调用,函数不依赖于类/对象
    ④ 方法可以访问成员变量,函数不可以
时间: 2024-12-28 21:23:04

OC - 2.OC基础知识介绍的相关文章

view基础知识介绍(二)

view基础知识介绍 View的滑动 View的滑动可以通过三种方式来实现: 通过view本身提供的scrollTo和scrollBy方法 通过动画施加平移效果来实现 通过改变view的LayoutParams使得view重新布局来实现 scrollTo/scrollBy ①. 通过查看view的源码 我们可以发现 scrollBy方法其实也是调用了scrollTo方法来实现的 scrollTo方法是基于所传递参数的绝对位置滑动 而scrollBy是根据所传递参数基于当前未知的滑动 通过源码可知

NLP汉语自然语言处理入门基础知识介绍

NLP汉语自然语言处理入门基础知识介绍 自然语言处理定义: 自然语言处理是一门计算机科学.人工智能以及语言学的交叉学科.虽然语言只是人工智能的一部分(人工智能还包括计算机视觉等),但它是非常独特的一部分.这个星球上有许多生物拥有超过人类的视觉系统,但只有人类才拥有这么高级的语言. 自然语言处理的目标是让计算机处理或说"理解"自然语言,以完成有意义的任务,比如订机票购物或QA等.完全理解和表达语言是极其困难的,完美的语言理解等效于实现人工智能. 自然语言处理涉及的几个层次: 作为输入一共

TCP_Wrappers基础知识介绍

1. TCP_Wrappers基础知识介绍 TCP_Wrappers是在 Solaris, HP_UX以及 Linux中广泛流行的免费软件.它被设计为一个介于外来服务请求和系统服务回应的中间处理软件.最常见的用法是与inetd一起使用.当系统的Inetd接收到一个外来服务请求的时候,并不是直接调用,而是调用TCP_Wrappers(可执行文件tcpd),TCP_Wrappers根据这个所请求的服务和针对这个服务所定制的存取控制规则来判断对方是否有使用这个服务的权限,如果有,TCP_Wrapper

Swift Playgrounds for mac基础知识介绍

Swift Playgrounds是一款适用于iPad和Mac的革命性应用程序,它使Swift学习变得互动而有趣.它不需要编码知识,因此非常适合刚开始的学生.使用Swift解决难题,以掌握基本知识.Swift是Apple创立的一种强大的编程语言,专业人士用来构建当今最受欢迎的应用程序.在本篇文章中,我们介绍的是Swift Playgrounds for mac基础知识. [dl]15-6298[/dl] 首先我们来认识一下基本的操作: 掌握基础知识,然后面对更多挑战.除了内置的课程库之外,Swi

OC语言自学基础知识总结

一.成员变量的作用域 二.点语法 三.构造方法 四.分类 五.类的本质 六.自动生成getter和setter方法 七.description方法 八.id类型 九.SEL 一.成员变量的作用域 @public 在任何地方都能直接访问对象的成员变量 @private 只能在当前类的对象方法中访问 @protected(可以不写,默认) 能在当前类和子类的对象方法中直接访问 @package 只要处在同一个框架中,就能直接访问对象的成员变量 @interface和@implementation中不

iOS 内存管理(一)之基础知识介绍

1,什么是引用计数 所有OC对象都有一个计数器,叫做引用计数,引用计数就是目前有几个对象在使用该对象(持有该对象的引用): 2,什么是对象所有权 A对象拥有B对象的引用,A对象拥有B对象的所有权: 3,什么情况下需要retain A对象的拥有者又增加了一个,那么A对象的拥有计数加1,此时需要使用retain(就是当其他对象需要该对象时,即其他的指针指向了该对象,那么就使该对象的引用计数加1此时需要向该对象发retain消息) 4,什么情况下需要release A对象的拥有者又减少了一个,那么A对

易无忧八字推断:(一) 基础知识介绍

简序: 基于对国学古老传统文化五行八字的兴趣爱好,尝试对其浅显理解和和实践,构建分析工具,借此抛砖引玉,希望能引起对古文化的兴趣. 五行八字基础: 五行是古代是古人对时间空间认知的一个综合世界观,认为凡事都是相互联系的整体,个人理解从宏观的角度讲,都是有联系并且可以引起共振的一个致密系统,而八字就是对系统内在规律一个高度的提炼,如时分四季分春夏秋冬:对应木火金水,四方东南西北也五行,人有五腑对于五行. 所以古人在掌握了八字的变化规律就能对自然界的发展变化有某种预测的能力,从上古连山至春秋鬼谷子阴

can基础知识介绍

1.什么是can 2.can的特点 2.物理层特征 我们使用ISO11898标准,物理层特征如图所示 3.帧的种类介绍 实际上有一些帧是有硬件来实现的. 4.数据帧介绍 5.总线仲裁 6.位时序(用于设置波特率) 在STM32中传播时间段和相位缓冲段1是放在一起形成PBS1的 7.总结

html基础知识介绍

1 前端概要 前端三大利器 1.html  赤裸裸的人 2.css   穿上华丽的衣服 3.js    让人生动起来 2 HTML本质及在web程序中的作用 2.1 介绍 HTML 1.一套规则,浏览器认识的规则 2.开发者:学习HTML规则,写HTML文件(充当模板作用),从数据库获取数据,替换到html指定位置(web框架) 3.本地测试:a.找到文件路径,直接浏览器打开b.pycharm打开测试 2.2 Web应用本质 众所周知,对于所有的Web应用,本质上其实就是一个socket服务端,