来源于视频https://www.bilibili.com/video/BV1NJ411T78u

简要介绍

  1. OC是扩充C的面向对象编程语言,本质上还是C语言

    所以OC中是可以写C语言的,也是完全可以兼容C语言的(也就是可以在OC中写C语言)

image-20220924144253965

  1. OC文件名后缀是.m, m代表message 代表OC中的消息机制,OC大多以NS开头,是因为NextStep开发.

  2. #Import指令

    • 是c语言 #include的增强版 无论inport多少次 只会包含一次
    • 作用是导入库
  3. Foundation框架

    基础 基本,提供了一些基础功能 一些数据类型

  4. @autoreleasetpool 自动释放池 相当于c# using

  5. 一些占位符(c语言)

    占位符 说明 示例
    %d int
    %f float 浮点类型 NSLog(@"num=%f",100f)
    %lf double类型
    %hd short int
    %ld long
    %lld long long
    %u unsigned
    %c char类型
    %s c中 字符串 printf("hell%s","o")
    %@ OC中字符串 NSLog(@"hello %@",@"world")
    %p 指针
  6. 字符串

    C中

    * char str[10]="abc"  后面会用 `\0` 补齐
    * char *str="abc"
    * char str[]={'a','b','c'}
    

    OC中

    • OC字符串必须加一个@符号 @”hello” NSString *str=@”abc”
    • 使用NSString类型 存储的是一个指针变量,存贮的是字符的指针
  7. @符号

    1. 将C字符串转换为OC字符串
    2. OC中绝大部分关键字都是@开头
  8. 函数定义与调用

    1. 先定义然后再调用
  9. 数据类型(加粗是OC特有)

    关键字 占用空间 范围
    char 1 字节 -128 到 127 或 0 到 255
    unsigned char 1 字节 0 到 255
    signed char 1 字节 -128 到 127
    int 2 或 4 字节 -32,768 到 32,767 或 -2,147,483,648 到 2,147,483,647
    unsigned int 2 或 4 字节 0 到 65,535 或 0 到 4,294,967,295
    short 2 字节 -32,768 到 32,767
    unsigned short 2 字节 0 到 65,535
    long 4 字节 -2,147,483,648 到 2,147,483,647
    unsigned long 4 字节 0 到 4,294,967,295
    BOOL类型 1字节 BOOL=YES /NO (都是大写) 实际是 typedef signed char BOOL
    Boolean 1字节 Boolean=true/false 实际是 typedef unsigned char
    id类型
    nil ==NULL oc用nil c用null
    SEL 方法选择器
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
//声明类
@interface ClassName:NSObject
{
NSString *_name; //默认外部不可以反问

@public int _age; //可以外部访问
}
//方法声明和实现必须一个整体 不然调用会报错
- (void) Run; //方法声明 无返回值
- (void) Eat:(NSString *) foodName; //带参数方法 无返回值
- (int) Sum:(int) num1:(int) num2; //带参数 有返回值
-(void) CallOther; //调用其他方法
@end

//实现类
@implementation ClassName
- (void) Run //方法实现
{
NSLog(@"%@跑",_name); //谁跑 直接访问字段
}
- (void) Eat:(NSString *) foodName
{
NSLog(@"正在吃%@",foodName);
}
- (int) Sum:(int) num1:(int) num2
{
int sum=num1+num2;
return sum;
}
- (void) CallOther
{
[self Run];//调用本类中其他方法
}
@end

int main(int v,const char * args[])
{
//实例化
ClassName *cn=[ClassName new];
//设置字段
cn->_age=10;//或者 (*cn)._age=10;
//调用方法
[cn Run];
[cn Eat:@"西湖醋鱼"];
int sum= [cn Sum:10:20];
}