标签:
1.局部变量和全局变量以及成员变量的区别
写在类声明的大括号中的变量, 我们称之为 成员变量(属性, 实例变量)
成员变量只能通过对象来访问
注意: 成员变量不能离开类, 离开类之后就不是成员变量,成员变量不能在定义的同时进行初始化
存储: 堆(当前对象对应的堆的存储空间中)
存储在堆中的数据, 不会被自动释放, 只能程序员手动释放
写在函数和大括号外部的变量, 我们称之为全局变量
作用域: 从定义的那一行开始, 一直到文件末尾
局部变量可以先定义在初始化, 也可以定义的同时初始化
存储: 静态区
程序一启动就会分配存储空间, 直到程序结束才会释放
写在函数或者代码块中的变量, 我们称之为局部变量
作用域: 从定义的那一行开始, 一直到遇到大括号或者return
局部变量可以先定义再初始化, 也可以定义的同时初始化
存储 : 栈
存储在栈中的数据有一个特点, 系统会自动给我们释放
2.函数和方法的区别
1.函数属于整个文件, 方法属于某一个类
方法如果离开类就不行
2.函数可以直接调用, 方法必须用对象或者类来调用
注意: 虽然函数属于整个文件, 但是如果把函数写在类的声明中会不识别
3.不能把函数当做方法来调用, 也不能把方法当做函数来调用
方法的注意点:
>方法可以没有声明只有实现
>方法可以只有声明没有实现, 编译不会报错, 但是运行会报错
如果方法只有声明没有实现, 那么运行时会报:
reason: ‘+[Person demo]: unrecognized selector sent to class 0x100001140‘
发送了一个不能识别的消息, 在Person类中没有+开头的demo方法
reason: ‘-[Person test]: unrecognized selector sent to instance 0x100400000‘
类也有一个注意点:
类可以只有实现没有声明
注意: 在开发中不建议这样写
3.常见错误:
1.只有类的声明,没有类的实现
2.漏了@end
3. @interface和@implementation嵌套
4.成员变量没有写在括号里面
5.方法的声明写在了大括号里面
6.成员变量不能在{}中进行初始化、不能被直接拿出去访问
7.方法不能当做函数一样调用
8.OC方法只能声明在@interface和@end之间,只能实现在@implementation和@end之间。也就是说OC方法不能独立于类存在
9.C函数不属于类,跟类没有联系,C函数只归定义函数的文件所有
10.C函数不能访问OC对象的成员
11.低级错误:方法有声明,但是实现的时候写成了函数
12.OC可以没有@interface同样可以定义一个类
4.字符串基本使用
NSString使用
只需要在C语言字符串前面加上@符号, 系统就会自动将C语言字符串转换为OC字符串
C语言中的字符串不是对象;OC中的字符串是一个对象
注意: 输出C语言的字符串使用%s
输出OC的字符串使用%@, %@就专门用于输出对象类型的
方法不能使用函数来实现, 方法是方法, 函数是函数
方法属于一个类, 函数属于一个文件
5.结构体作为对象的属性
初始化结构体属性
方法一:强制转换
stu->_birthday = (Date){1986, 1, 15};
方法二:定义一个新的结构体,给d赋值,将d赋值给_birthday
Date d = {1986, 1, 15};
stu->_birthday = d;
方法三:分别赋值
stu->_birthday.year = 1986;
stu->_birthday.month = 1;
stu->_birthday.day = 15;
6.对象作为方法的参数传递
7.对象作为方法的参数连续传递
8.#pragma mark 基本使用
//#pragma mark 程序入口
9.对象作为返回值类型
注意:在企业级开发中千万不要随意修改一个方法
通过new创建出来的对象存储在堆中,堆中的数据不会自动释放
标签:
原文地址:http://www.cnblogs.com/micalafei/p/4774615.html