1、一个类的定义一般分成两部分:
@interface 部分
1、确定这个类继承自谁,使用冒号":"
2、确定拥有的数据,包括在"{}"中
3、确定可以执行的动作
- 实例方法
+ 类方法
4、以@end结尾
@implementation部分
2、程序中有GC机制,但是最好自己管理内存。IPhone等也不支持GC。
3、OC中一般get方法的名称和对应的属性的名称相同。
4、OC中的模运算只支持整数运算。
5、通过键盘输入值:
int num = 0;
NSLog(@"Please input a number,type is integer!!!");
scanf("%i",&num);
6、OC中的bool类型表示:
真值:非0数字、TRUE、true、YES
假值:0、FALSE、false、NO
7、在类的@implementation一般不会重复声明实例变量(虽然可以这么做),在其他地方引用的时候一班都会引用头文件而不是@implementation文件。
8、import中使用<>和""的区别是:<>首先查找系统头文件,而""首先在当前目录下查找。
9、@property 属性名称1,属性名称2,...;在@interface文件中声明属性的setter和getter
@synthesize 属性名称1,属性名称2,...;在@implementation文件中实现默认的setter和getter
以上的指令只是针对基本类型。
10、OC中可以通过"实例名.属性名"来访问属性。
11、方法的声明
修饰符(-/+) (返回类型或void) 方法名第一部分:(类型) 参数名称
方法名第二部分:(类型) 参数名称
方法名第三部分:(类型) 参数名称
......
{
方法体
}
可以省略方法名称除了第一部分之外的所有的部分。如果方法的参数类型或者返回值是引用类型,需要在类型名称后添加一个*
修饰符(-/+) (返回类型或void) 方法名第一部分:(类型) 参数名称
:(类型) 参数名称
:(类型) 参数名称
......
{
方法体
}
12、局部变量没有初始值,在声明的时候必须给予赋值。方法的参数是局部变量,方法没有办法修改方法的参数。
13、一般将static变量生命在@implementation的外面,这样类中的所有的方法和属性都可以访问它。
14、self关键字调用自己的方法或者变量。
15、OC中使用的坐标系是笛卡尔坐标是,即一个图形的左下定点是这个图形的原点(0,0)。
16、@class指令可以代替import "类名称.h",这样会提高效率,因为让引用这个类的类知道它是一个方法而已;
如果要引用这个类中的方法则需要使用import,这样才能知道这个类中的方法、变量等。
17、重写dealloc方法,释放本身内存,并调用[super release]。
18、在新建一个对象的时候需要首先判断是不是nil,如果不为nil,则需要先进行一次内存的释放。
19、多态:来自不同类的对象可以共享名称相同的方法
20、分类:
#import "类名称.h"
@interface 类名称 (分类名称)
{
}
#improt "类名称.h"
@implementation 类名称 (分类名称)
{
}
@interface 部分
1、确定这个类继承自谁,使用冒号":"
2、确定拥有的数据,包括在"{}"中
3、确定可以执行的动作
- 实例方法
+ 类方法
4、以@end结尾
@implementation部分
2、程序中有GC机制,但是最好自己管理内存。IPhone等也不支持GC。
3、OC中一般get方法的名称和对应的属性的名称相同。
4、OC中的模运算只支持整数运算。
5、通过键盘输入值:
int num = 0;
NSLog(@"Please input a number,type is integer!!!");
scanf("%i",&num);
6、OC中的bool类型表示:
真值:非0数字、TRUE、true、YES
假值:0、FALSE、false、NO
7、在类的@implementation一般不会重复声明实例变量(虽然可以这么做),在其他地方引用的时候一班都会引用头文件而不是@implementation文件。
8、import中使用<>和""的区别是:<>首先查找系统头文件,而""首先在当前目录下查找。
9、@property 属性名称1,属性名称2,...;在@interface文件中声明属性的setter和getter
@synthesize 属性名称1,属性名称2,...;在@implementation文件中实现默认的setter和getter
以上的指令只是针对基本类型。
10、OC中可以通过"实例名.属性名"来访问属性。
11、方法的声明
修饰符(-/+) (返回类型或void) 方法名第一部分:(类型) 参数名称
方法名第二部分:(类型) 参数名称
方法名第三部分:(类型) 参数名称
......
{
方法体
}
可以省略方法名称除了第一部分之外的所有的部分。如果方法的参数类型或者返回值是引用类型,需要在类型名称后添加一个*
修饰符(-/+) (返回类型或void) 方法名第一部分:(类型) 参数名称
:(类型) 参数名称
:(类型) 参数名称
......
{
方法体
}
12、局部变量没有初始值,在声明的时候必须给予赋值。方法的参数是局部变量,方法没有办法修改方法的参数。
13、一般将static变量生命在@implementation的外面,这样类中的所有的方法和属性都可以访问它。
14、self关键字调用自己的方法或者变量。
15、OC中使用的坐标系是笛卡尔坐标是,即一个图形的左下定点是这个图形的原点(0,0)。
16、@class指令可以代替import "类名称.h",这样会提高效率,因为让引用这个类的类知道它是一个方法而已;
如果要引用这个类中的方法则需要使用import,这样才能知道这个类中的方法、变量等。
17、重写dealloc方法,释放本身内存,并调用[super release]。
18、在新建一个对象的时候需要首先判断是不是nil,如果不为nil,则需要先进行一次内存的释放。
19、多态:来自不同类的对象可以共享名称相同的方法
20、分类:
#import "类名称.h"
@interface 类名称 (分类名称)
{
}
#improt "类名称.h"
@implementation 类名称 (分类名称)
{
}