作者:统计小屋_321 | 来源:互联网 | 2023-09-06 12:53
一、Objective-c简介Objective-C简称Obj-C或者OCObjective:面向对象的OC是在C语言的基础之上加了一些新的面向对象的语法。将C语言复杂的,比较繁琐
一、Objective-c简介
Objective-C简称Obj-C或者OC
Objective:面向对象的
OC是在C语言的基础之上加了一些新的面向对象的语法。将C语言复杂的,
比较繁琐的语法封装的更为简单。
完全兼容C语言,也就是说在OC语言中可以写任意的C代码。
二、Objective-C基本语法
1、OC语言的源文件后缀名是.m
OC程序的源文件后缀名为.m
m代表message代表OC的消息机制
因为我们讲过 OC语言完全兼容C语言,所以在.m文件中可以写C语言的任何代码,甚至C++的代
码也可以写在.m文件下。
2、main函数仍然是程序的入口和出口
在OC程序中,main函数仍然是程序的入口和出口
main函数的写法与C语言main函数的写法完全一样。
主函数都是可以带参数和不带参数
3、#import 指令
是C语言中#include指令的增强版 。
作用: 将指定文件的内容, 在预编译的时候,拷贝到写指令的地方。
增强: 同一个文件,无论被#import多少次,在预编译的时候 只会包含1次。
include指令防止重复包含 需要配合预编译执行来实现。
import指令的底层 会自动判断这个文件是否被包含, 只有没有被包含的时候才会包含。
#import指令包含的时候可以分为双引号和尖括号 。
#import””包含用户自定义;会先在当前源文件目录下查找 如果没有的话 再去Xcode去找
#import<>包含系统的文件;直接去Xcode编译器中找
我们自己的文件一般都是放在当前源文件目录中, 我们自己的文件包含的使用&#8221;&#8221;如果要包含
系统的文件<>
4.框架
苹果公司或者第三方事先准备的一些功能模块,把这些功能模块封装在1个1个的类之中。
这些类的集合就叫做框架
类似于C语言中的函数库。 它就是一个功能集合,只不过这些功能集合是苹果公司写的,当我
们要使用这个功能的时候,就只需要调用就可以了 。
Foundation框架:
提供了OC最基础的功能,Foundation的意思就是基础的意思。
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/
MacOSX10.10.sdk/System/Library/Frameworks/Foundation.framework/Headers
Foundation头文件的路径。
Foundation.h这个文件中引入了该框架中的所有的头文件,只要引入这个头文件 就可以使用
Foundation框架中所有的功能了。
Autoreleasepool自动释放池
作用自动释放其内的对象,在内存管理的时候会详细介绍。现在这个阶段可以带着,也可以去
掉都能实现目前的功能。
三、NSLog函数使用方法
1、NSLog用法
NSLog是printf函数的增强版
作用: 向控制台输出数据
增强的地方:
A.输出信息之后自动换行
B.在输出指定数据的同时,还会输出一些关于调试的信息。
会显示出信息的时间: 精确到毫秒
先显示这个信息是由哪个程序输出的
用法与printf函数用法基本相同。
使用的注意点:
NSLog中放的字符串写法与printf中字符串的区别
2、OC中的字符串
特意设置了一种数据类型去存储OC的字符串 NSString类,使用NSString类型的指针变量
可以保存1个字符串数据的 地址。
注意 :
OC字符串必须使用@符号开头
@符号放置的位置 在双引号外面。
在打印OC字符串的时候使用 格式控制符%@
NSString 类型的指针变量只能存储OC字符串常量的地址
3、NS前缀
前缀:
在Objective-C应用中所有的类名都必须是全局唯一的,由于很多不同的框架中会有一些
相似的功能,所以在名字上也可能会有重复 所以苹果官方文档规定类名需要有2-3个字母
作为前缀。
类前缀:
苹果官方建议两个字母作为前缀的类名是为官方的库和框架准备的,而对于作为第三方
开发者的我们,官方建议使用3个或者更多的字母作为前缀去命名我们的类 。
NS来自于NeXTStep的一个软件 NeXT Software。OC中不支持命名空间, NS是为了避免
命名冲突而给的前缀, 看到NS前缀就知道是 Cocoa中的系统类的名称。
四、OC中注释及@符号使用
1、 “@” 的使用方法
在OC中“@”有特殊的用法
1)@&#8221;&#8221; 这个符号表示将一个C的字符串转化为OC中的字符串对象NSString.
2)@标识符 OC中大部分的关键字都是以@开头的,比如@interface,@implementation,@end
2、OC中注释
OC中的注释有两种:
1)单行注释://
2)多行注释:/* */
3)文档注释
五、OC和C差异学习
1、源文件对比
2、基本语法对比
数据类型对比学习
Boolean 类型指的是用于存储真值和假值的变量,一般用于程序流程控制 。
Boolean 类型数据允许取值 true 或 false ,也可以是0或非0的整数替代 true 和
false.
3、关键字对比
4、流程控制语句对比
1)if else
2)switch
3)while
4)do while
5)for
六、创建一个对象并访问成员变量
1、创建一个对象
我们用类的方式告诉计算机 我们需要一个什么样的对象 ,之后我们要在程序中使用这个对
象,就必须先创建一个对象。
只要是用new操作符定义的实体就会在堆内存中开辟一个新的空间。
[Carnew]在内存中干了三件事
1)在堆中开辟一段存储空间
2)初始化成员变量(写在类声明大括号中的属性就叫做成员变量,也叫做实例变量)
3)返回开辟空间的首地址。
每一个对象中都有一份属于自己的属性
访问对象的属性可以用:
对象->对象成员; (注意声明属性为@public)
对其中一个对象的成员进行了修改, 和其他的对象没有关系 。
七、无参方法声明实现及调用
1、无参方法声明实现及调用
OC中的方法分为 : 对象方法 和 类方法
对象方法
1)对象方法以-开头如-(void)xx ;
2)对象方法只能由对象来调用
3)对象方法中可以访问当前对象的成员变量
4)调用格式[对象名 对象方法名]
凡事类型都用()括起来
类方法
1)类方法以+开头 如+(void)xxx;
2)类方法只能由类来调用
3)类方法中不能访问实例变量(成员变量),因为类方法由类来调用,并没有创建存储空间来
存储类中的成员变量。
4)调用格式:[类名 类方法名]
不依赖于对象,执行效率高
能用类方法解决的问题,尽量使用类方法
场合: 当方法内部不需要使用到成员变量时,可以改为类方法
2、方法的调用
使用对象调用方法就是OC中的消息机制
OC语言中采用特定的语言调用类或者实例(对象)的方法成为发送消息或方法调用。
OC中方法的调用有两种
1)[类名或者对象名 方法名]
不带参数的方法调用
2)点语法: 对象名.方法名
八、有参方法的声明实现和调用
1、有参方法声明和实现
带参数的方法的定义和实现
声明:
2、有参方法调用
带参数的方法调用: