Objective-C:001

373 阅读5分钟

小知识,大挑战!本文正在参与“程序员必备小知识”创作活动。

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{
    //无论如何都会执行的代码
}

原文链接