IOS学习笔记----OC(一)类与对象

#import <Foundation/Foundation.h>

int main(int argc, const char * argv[]) {
    @autoreleasepool {
        // insert code here...
        NSLog(@"Hello, World222222!");
    }
    return 0;
}

1.OC相对于C
在C的基础上新增了一小部分面向对象的语法
将C的复杂语法封装的更为简单
OC完全兼容C语言
在C语言的基础上新增了一小部分面向对象的语法

2.OC程序的源文件的后缀名是.m m代表message 代表OC中最重要的1个机制—–消息机制;
C程序的源文件后缀名是.c

3.main函数仍然是OC程序的入口和出口
int类型的返回值 代表程序的结束状态
main函数的参数:仍然可以接受用户在运行程序的时候传递数据给数据,参数也可以不要

4.#import指令
a.以#号开头,是一个预处理指令
b.作用:是c语言#include指令的增强版,将文件的内容在预编译的时候拷贝到指令的地方
c.增加之处:同一个文件无论#import多少次,只包含一次
如果#include指令要实现这个效果,就必须要配合条件编译指令来实现,而#import指令只需要直接包含就可以,其他什么都不用做
d.简要原理:#import指令在包含文件的时候,底层会先判断这个文件是否被包含 如果被包含就会略过,否则才会包含

5.框架
a.是一个功能集
b.Foundation框架
Foundation:基础,这个框架中提供了一些最基础的功能(输入输出,一些数据类型)

6.@authoreleasepool 是自动释放池

7.NSLog函数
a.作用:是printf函数的增强版,向控制台输出信息
b.语法:NSLog(@”要输出的信息”)
c.增加之处:1.输出一些调试信息
2.会自动换行
3.OC中其实还新增了一些数据类型,NSLog不仅仅可以输出C数据类型变量的值还可以输出OC中新增的数据类型的值
d.使用注意:1.NSLog函数的第一个参数前必须加一个@符号
2.如果在字符串的末尾加了个‘\n’代表换行,那么函数的自动换行就会失效

8.字符串(NSString)
a.专门用来存储OC字符串的地址
b.OC的字符串常量必须要使用一个前缀@符号:
“啦啦啦” 这是一个C语言的字符串
@“啦啦啦” 这是一个OC的字符串常量
NSString 类型的指针变量只能用来存储OC字符串的地址
c.语法:NSString *str=@”啦啦啦”
d.注意:1.NSLog函数的第一个参数是一个OC字符串,所以NSLog函数的第一个实参应该以@符号开头
2.如果要使用NSLog函数输出OC字符串的值,那么要占位符%@,而不是C语音中的%s

9.@符号
a.将C字符串转换成OC字符串
b.OC当中的绝大部分的关键字都是以@符号开头

10.函数定义和调用
与C语言一样

11.OC程序和C程序各个阶段的后缀名对比
源文件 目标文件 可执行文件
C .c .o .out
OC .m .o .out

12.OC中的数据类型
a.OC中支持C语言中的多有数据类型
1.基本数据类型(int double float char ….)
2.构造类型(数组 结构体 枚举 …)
3.指针类型( int *p1;)
4.空类型(void)
5.typedef自定义类型
b.BOOL类型
1.可以存储YES或NO中的任意一个数据
2.一般情况下BOOL类型的变量用来存储条件表达式的结果
3.BOOL本质
typedef signed char BOOL;
实际上BOOL类型的变量是一个有符号的char变量
#define YES ((BOOL)1)
#define NO ((BOOL)0)
YES 实际上就是1
NO 实际上就是0
c.Boolean
1.Boolean类型的变量可以存储true或false
2.一般情况下BOOL类型的变量用来存储条件表达式的结果
d. class类型 类
e. id类型 万能指针
f. nil 与NULL差不多
g.SEL 方法选择器
h. block 代码段

13.如何定义类

   a.语法:
            1.位置:直接写在源文件之中,不要写在main函数之中
            2.类的定义分为两个部分:
                     a.类的声明:
                     @interface 类名 NSObject
                     {
                     //这类事物具有的相同特征,将他们定义为变量
                     数据类型:变量1;
                     数据类型:变量2;
                     ...
                     }
                     //功能就是1个方法,将方法的声明写在这

            @end
                    b.类的实现:
                    @implementation 类名
                    讲方法的实现写在这
                    @end
            3.注意 
                    a.类必须要有声明和实现
                    b.类名用你描述的事物的名称来命名,类名的每一个单词的首字母必须大写
                    c.为类定义属性的时候,属性的名词必须以_开头 
                    d.类是无法直接使用的

14.对象
a.创建语法:
类名 *对象名 = [类名 new]
Person *p1=[Person new]
b.特点:可以直接使用
类中定义的东西,对象里都有,不会多不会少
c.使用:
访问对象的属性:
1.默认情况下,对象的属性是不允许被外界访问的。如果允许对象的属性被外界访问,则在声明属性的时候加@public关键字
访问对象的属性方式:
对象名->属性名=值;
(*对象名).属性名

15.类无参方法:
a. 声明:
1.位置:在@interface的大括弧外面
2.语法:
- (返回值类型)方法名称;
-(void)run;//表明声明了一个无参数无返回值的方法run
b.实现:
1.位置:在@implementation之中实现
2.实现的方法:
将方法的声明拷贝到@implementation之中,去掉分号,追加大括弧一对,将方法的实现的代码写在大括弧中
3.调用:
a.方法是无法直接调用的,因为雷不能直接使用,必须先创建对象,那么这个对象中就有类中的属性和方法了,就可以调用对象的方法了;
b.调用对象的方法:
[对象名 对象方法];

16.类带1个参数方法
a. 声明:
1.位置:在@interface的大括弧外面
2.语法:
-(返回值类型)方法名:(参数类型)形参名称;
-(void)eat:(*NSString)foodName;
3.实现:
将方法的声明拷贝到@implementation之中,去掉分号,追加大括弧一对,将方法的实现的代码写在大括弧中
4.调用:
[对象名 方法名:实参]

17.类带多个参数方法
a. 声明:
1.位置:在@interface的大括弧外面
2.语法:
-(返回值类型) 方法名:(参数类型)形参 :(参数类型)形参2 …
-(int)sum:(int)num1 :(int)num2
3.实现:
将方法的声明拷贝到@implementation之中,去掉分号,追加大括弧一对,将方法的实现的代码写在大括弧中
4.调用:
[对象名 方法名:实参1 :实参2….]

18.带参数的方法声明规范:
a.如果方法只有1个参数,要求最好这个方法的名字叫做 xxxWith
b.如果方法有多个参数,建议这个方法名称:
方法名With:(参数类型)参数名称 and:(参数类型)参数名称 ..
-(int)sumWith:(int)num1 and:(int)num2;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值