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
NSLog
① NSLog函数包含在Foundation框架中
② NSLog函数接收的是OC语言字符串
③ NSLog函数默认在结束处输出换行
④ NSLog函数不能以%s格式输出包含中文的字符串printf
① printf函数包含在stdio.h文件中
② printf函数接收的是C语言字符串
③ printf函数需要使用换行符'\n'NSLog的其他用途
① 通过_LINE_参数输出改代码所在的行号
② 通过_FILE_参数输出改代码所在的文件的文件名
③ 通过_func_参数输出代码所在的函数的函数名
二、类、对象和方法
1> 类
类与结构体
① 结构体是数据的封装
② 类是数据及与数据相关操作的封装类的声明
① 用@interface和@end组合来声明一个类,通常继承与根类NSObject
② 指定类名:首字母大写,使用驼峰标示,不包含数字
③ 声明属性列表:以下划线开头,可以与get方法的名称区分开
④ 声明方法列表:包括类方法和对象方法类的实现
① 用@implementation和@end组合来实现类
② 实现类声明中的方法列表
③ 类的实现也可以定义实例变量,通常不这样定义
④ 未实现声明的类会发出警告类的本质
① 类本质上也是一个对象,是class类定义的对象,称为类对象
② 使用class方法可以获取类对象
③ 每个类中都会有一个superclass指针指向其父类类的加载和初始化
① 加载
)类在使用之前会被加载至内存,加载完毕调用+(void)load方法
)所有的类只会被加载一次
)方法会在类加载的同时被加载
)某个类定义的所有对象的isa指针都指向内存中该类的唯一副本
)首先加载父类,其次是子类,最后是分类
② 初始化
)类在使用时才会调用initialize方法初始化
)没有使用的类不会调用initialize方法
)首先调用父类的初始化方法,其次是子类类的使用注意
① 类的声明和实现必须成对出现
② 类不能嵌套声明和实现
③ 成员变量不能在定义的时候初始化,也不能直接使用
④ 成员变量不能用static等关键字修饰
⑤ 访问没有的成员变量会报错
⑥ 成员变量必须写在大括号内,方法列表不能写在大括号内
⑦ 类的声明必须出现在使用之前@public、@protected、@
① @public修饰的成员变量在任何地方都可以直接访问
② @protected修饰的成员变量可以在当前类以及子类的对象方法中直接访问,默认为该类型
③ @private修饰的成员变量只能在当前类的对象方法中直接访问,在实现中声明的成员变量默认为该类型
④ @package修饰的成员变量在同一个“体系内”(框架)可以访问,
介于@private和@public之间
2> 对象
对象与类
① 类是具有相同或相似属性和操作的对象的抽象;对象是类的一个实例,是类通过调用一定的方法创建的
② 类本身会占用内存空间,包含所有的方法列表
③ 类的成员变量不会占用内存空间,只有在定义对象时才会分配存储空间对象的本质
① 本质上,我们研究的一切事物皆是的对象,包括具体事物和抽象事物
② 每个对象总会携带它的isa成员,指向该对象的类
③ 系统总会携带对象的相关信息对象的创建和初始化
① 初始化方法通常用init开头
② 类方法alloc和init完成对象的创建和初始化
③ 类方法new可以代替alloc和init完成对象的创建并初始化
④ 在对象的初始化时会加载一次类,返回一个该类型的指针匿名对象
① 每次创建的匿名对象都是不同的对象
② 匿名对象会造成内存泄露,尽量不要创建类似匿名对象的对象
3> 方法
方法的定义
① 返回值类型:指定函数返回值的类型
② 参数列表:多个参数用冒号及冒号前的描述隔开
③ 方法名:在有参数列表的方法中,方法名包括冒号及冒号前的描述类方法
① 以加号(+)开头
② 只能通过类名调用,可以在中括号内调用
③ 不能访问实例变量
④ 当不需要访问成员变量的时候通常使用类方法
⑤ 工具类的方法通常为类方法对象方法
① 以减号(-)开头
② 只能通过对象调用,可以在中括号内调用
③ 对象方法能访问实例变量方法的使用注意
① 方法不能独立与类而存在
② 方法有声明就必须有实现,否则会报错
③ 方法只有实现,没有实现,仍然能够调用,但是会发出警告
④ 访问没有的方法会警告
⑤ 类方法可以和对象方法同名
⑥ 方法不能用static等关键字修饰
⑦ 带参数的方法,一个参数对应一个冒号,通常在每个冒号前写描述方法与函数的区别
① 函数的定义可以出现在文件的任意位置,方法只能出现在@implementation和@end之间
② 函数归文件所有,方法归类/对象所有
③ 方法通过类/对象调用,函数不依赖于类/对象
④ 方法可以访问成员变量,函数不可以
OC - 2.OC基础知识介绍的更多相关文章
- Nginx基础知识介绍
Nginx基础知识介绍 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.Nginx概述 Nginx是免费的.开源的.高性能的HTTP和正向/反向代理服务器.邮件代理服务器.以及T ...
- TCP_Wrappers基础知识介绍
1. TCP_Wrappers基础知识介绍 TCP_Wrappers是在 Solaris, HP_UX以及 Linux中广泛流行的免费软件.它被设计为一个介于外来服务请求和系统服务回应的中间处理软件. ...
- Swift Playgrounds for mac基础知识介绍
Swift Playgrounds是一款适用于iPad和Mac的革命性应用程序,它使Swift学习变得互动而有趣.它不需要编码知识,因此非常适合刚开始的学生.使用Swift解决难题,以掌握基本知识.S ...
- WPF Step By Step -基础知识介绍
回顾 上一篇我们介绍了WPF基本的知识.并且介绍了WPF与winform传统的cs桌面应用编程模式上的变化,这篇,我们将会对WPF的一些基础的知识做一个简单的介绍,关于这些基础知识更深入的应用则在后续 ...
- python基础----基础知识介绍
一 编程语言的划分 编译型:将代码一次性全部编译成二进制,然后运行. 缺点:开发效率低,不能跨平台(windows与linux) 优点:执行效率高 代表语言:c语言 解释型:当程序开始运 ...
- android开发学习---linux下开发环境的搭建&& android基础知识介绍
一.配置所需开发环境 1.基本环境配置 JDK 5或以上版本(仅有JRE不够) (http://www.oracle.com/technetwork/java/javase/downloads/ind ...
- OC语言自学基础知识总结
一.成员变量的作用域 二.点语法 三.构造方法 四.分类 五.类的本质 六.自动生成getter和setter方法 七.description方法 八.id类型 九.SEL 一.成员变量的作用域 @p ...
- Linux基础知识介绍
1.Linux知识说明1)文件位置 1)/etc/inittab2)模式介绍 0:挂起模式-不推荐 1:单用户模式-只有管理员可以进入该模式,可以修改root密码,处理有登录权限而没有修改文件的权限问 ...
- ABP VNext框架基础知识介绍(1)--框架基础类继承关系
在我较早的时候,就开始研究和介绍ABP框架,ABP框架相对一些其他的框架,它整合了很多.net core的新技术和相关应用场景,虽然最早开始ABP框架是基于.net framework,后来也全部转向 ...
随机推荐
- [NOIP2003]栈
2003年普及组 题目背景 栈是计算机中经典的数据结构,简单的说,栈就是限制在一端进行插入删除操作的线性表. 栈有两种最重要的操作,即pop(从栈顶弹出一个元素)和push(将一个元素进栈). 栈的重 ...
- 【HTML】Advanced4:Accessible Links
1.Tab <ul> <li><a href="here.html" tabindex="1">Here</a> ...
- (转载)JDK中的设计模式
写的很好,学习道路更轻松一些 原文地址:http://blog.csdn.net/gtuu0123/article/details/6114197 JDK中设计模式 分类: Java相关 设计模式 2 ...
- 韦东山yy公开课笔记(2)--各种杂的问题
1. 编译器的版本和glibc库有对应关系吗,如何查看glibc的版本(glibc是linux系统中最底层的api,几乎其它任何运行库都会依赖于glibc),编译器是不是只带glibc被编译生成的 . ...
- Javascript的简介和使用
摘要:先讨论JavaScript的由来和一些比较容易混淆的概念,又讨论了JavaScript的实现,紧接着说明了在网页中怎么有效地更好地引入js代码. JavaScript的由来 是从一个简单的输入验 ...
- 微软Build2014大会干货总结-2
继昨天微软在Build2014大会上宣布一系列重磅举措后,第二天的主题是微软云(Microsoft Azure)及开发者战略,CSDN记者继续从旧金山现场给您发来一线报道. 第二天的主角是新上任的微软 ...
- 【Java基础】List迭代并修改时出现的ConcurrentModificationException问题
现在有一个需求,要遍历一个List,假设List里面存储的是String对象,然后该需求事判断里面如果有某个对象,则添加一个新的对象进去.自然,我们得出下面的代码: import java.util. ...
- HTTP 缓存控制总结
引言 通过网络获取内容既缓慢,成本又高:大的响应需要在客户端和服务器之间进行多次往返通信,这拖延了浏览器可以使用和处理内容的时间,同时也增加了访问者的数据成本.因此,缓存和重用以前获取的资源的能力成为 ...
- JavaScript- The Good Parts function Curry
Functions are values, and we can manipulate function values in interesting ways.Currying allows us t ...
- UOJ#191. 【集训队互测2016】Unknown
题意:维护一个数列,每个元素是个二维向量,每次可以在后面加一个元素或者删除一个元素.给定P(x,y),询问对于[l,r]区间内的元素$S_i$,$S_i \times P$的最大值是多少. 首先简单地 ...