OC新建一个类会生成两个文件一个是 .h文件,一个是 .m文件。
.h头文件一般定义的是这个类的类型
@interface 类名:NSObject{
定义属性
}
定义方法
@end
.m文件 一般是实现文件,类似于C++中的.cpp文件
@implementation
实现方法
@end
OC中定义类没有实用{},而是使用@关键字进行划分区域的。
函数:
//格式为:方法说明(返回类型)方法名:(参数类型)参数名称
-(void) HelloWorld:(BOOL)ishellworld{
//执行内容
}
前面带有减号(-)的方法为实例方法,必须使用类的实例才可以调用,对应的有+号,代表类的静态方法,不需要实例化即可调用,类似于java中的static关键字的作用。
self:指向自己的指针,类似于this
nil相当于null。
Objective-C的内存需要自己管理,添加了ARC机制后编译器帮助了Objective-C添加release释放代码,Java是通过垃圾回收机制管理的
类的声明:
@interface Person:NSObject{}
@interface:相当于Class 类名后面的冒号相当于Java中的extends 和kotlin用法一样
创建对象:
Person *p = [Person new];
Person *p = [Person alloc] init];
两种方式都可以,new方法的内部也会分开调用alloc方法来分配内存空间(返回分配的对象),使用init方法来对对象进行初始化 。两者的区别:1.采用new方式只能采用默认的init方法完成初始化;
2.采用alloc的方法可以用自定义的构造方法完成初始化;
我们在创建一个对象的时候会调用alloc方法,当对象被销毁的时候会调用dealloc方法,这个和C++中的析构函数一样,Java中有垃圾回收器,所以没有此类方法,但是有一个finalize方法,其实这个方法就是在垃圾回收器回收对象的时候调用,和这个dealloc功能差不多,但是在Java中我们并不提倡使用这个方法,因为会造成GC的回收发生错误。
默认初始化完毕,所有成员变量的值都为0,用完对象需要释放内存
[lisi release];
调用对象的属性:
//对象->属性名
lisi -> age;
//(*对象名).对象属性
(*lisi).name;
调用方法:
//[对象名 方法名]
[Person eat]
//[对象名 方法名:参数]
[Person eat:@"吃虾"]
[Person run:5]
在头文件中声明属性:
@property和@synthesize 编译器会自动补出其get和set方法
//在头文件中声明属性 .h
@property int age;
//在m文件中实现
@synthesize age;