小知识,大挑战!本文正在参与“程序员必备小知识”创作活动。
1.#import
是一个预处理指令;同一个文件,无论使用它导入多少次,都是一次;只需要直接包含就可以,其他什么都不用做。
2.Foundation
这是一个框架,提供基本功能;Foundation.h包含了框架中所有的头文件
3.main函数
它的参数用来让用户运行程序时传递数据给程序
4.@autoreleasepool
自动释放池,可写可不写,关乎内存管理,待续
5.NSLog函数
用于向控制台输出信息,能输出比较多的信息比如执行代码的时间和进程编号等;会自动换行,但如果自己写了\n,它的自动换行就会失效
6.NSString
是一个用于存储字符串的类型,通过指针变量来存储字符串的地址
7.面向对象和面向过程
面向过程就是分析解决问题的步骤,然后一步步代码实现
面向对象是把解决问题的事物分成多个对象
8.类的设计
名字;具有的相同特征;具有的共同行为
9.类的定义
类的本质是一个数据类型
类的声明(@interface)加上类的实现(@implementation)
声明:
@interface 类名:父类名
{
//用来描述类的共同特征,通过声明变量,常常称为属性
}
//用来描述类具有的行为,通过声明方法
@end
实现:
@implementation 类名
//方法的具体实现
@end
留心注意:
用来描述类名的每一个单词首字母必须大写;定义属性时,属性名以下划线开头,这算是一种编程规范;NSObject是所有类的父类
10.类的对象的创建
直接通过new关键字创建对象
类名 *对象名=[ 类名 new];
先通过alloc申请内存,然后调用init初始化一个对象
类名 *对象名=[[类名 alloc]init];
11.访问对象的属性
在声明属性的前面加一个@public关键字对象的属性才能被外界访问;
通过对象名->属性名就能实现访问
12.方法
方法的声明实现和调用---------声明在@interface的大括号外,实现是在@implementation和@end之间
声明
方法类型(返回值类型)方法名称:(参数类型)参数1:(参数类型)参数2~~~;
方法类型分两:类方法使用+;对象方法使用-
- 无参数的方法声明 :
-(void)run; - 一个参数的 :
-(void)eat:(NSString *)food; - 两个参数的 :
-(int)sum : (int)num1 :(int)num2;
声明建议
-
如果方法只有一个参数,命名时为
xxxWith -
如果多个,就这样写
方法类型(返回值类型)方法名称With:(参数类型)参数1 and:(参数类型)参数2~~~;
实现
方法类型(返回值类型)方法名称:(参数类型)参数1:(参数类型)参数2~~~
{
//代码片段
}
补充
多数情况下使用的都是不能直接调用的对象方法,所以先创建对象,才可以调用对象的方法
-
类方法的调用
[类名 方法名] -
对象方法的调用
- 调用无参数方法
[对象名 方法名]; - 一个参数
[对象名 方法名:参数]; - 多个参数
[对象名 方法名:参数1:参数2:参数3~~];
- 调用无参数方法
-
类方法需要使用类来调用,无须再创建实例对象
方法实现中直接访问属性
-(void)sayHi
{
NSLog(@"哈哈哈,我叫%@,今年%d岁",_name,_age)
}
对象作为方法的参数
此时是地址的传递,在方法内部通过形参修改指向对象的时候,影响实参变量指向对象的值,也就是能通过传入的这个指针改变对象的值
对象作为方法的返回值
如果方法的返回值是对象,那返回值的类型应该是类指针
这种情况下返回的是一个指向对象的指针
13.self关键字的使用
在对象方法中使用self
当方法内部出现和属性同名的变量时,调用方法优先访问到的是同名的变量
//如果person这个类中有name这个属性,方法中也有name这个变量并对它赋值x并输出name,则即使初始化了name再调用方法,它还是输出变量的值
这时候,如果要访问属性,self就要上场了,如果在输出的时候改成指针形式,如self->name,就会输出属性的值而不是变量的值
使用场景
- 对象方法中必须使用
self- 方法中存在和属性同名的局部变量
- 要调用当前对象的其他对象方法
在类方法中使用self
self指的是类的时候,只能调用类方法;指的是对象的时候,只能调用对象方法
self剖析
是一个指针,在类方法中指向的是当前类在代码段中的地址
14.匿名对象
[Person new]->_name=@"Jack";
[[Person new] sayHi];
上述代码创建了一个匿名对象,只用于访问_name属性
使用情况
- 一个对象的成员只被调用一次
- 匿名对象作为实参传递给方法使用
注意
- 匿名对象只能使用一次
- 每次创建的匿名对象,都是不同的对象
15.异常
定义:某些特定情况下,运行时崩溃这样的问题
处理:通过@try..........@catch
语法格式:
@try{
//可能发生异常的代码
}@catch(NSException *ex){
//处理异常的相关代码
//NSException类是异常类,可以通过打印ex指向的对象的值明确发生异常的原因
}@finally{
//无论如何都会执行的代码
}