假期开始咯,继续学习OC语法。想学习IOS开发,就必须要学好Objective-C语法。把基础打好就十分重要了。OC语法我是看无限互联的视频教学学习的。看了之后,感觉入门是没什么问题的,感觉学习到什么深度,那就不知道了...
刚学习OC的语法,还是觉得这些语法很别扭,和其他语言有一点区别。我学过C、C++、Java语言,OC对我的印象就是,有C、C++语言的数据类型,但也有很多OC独特的语法类型。有时候还有点疑惑,为什么IOS不用C++开发?不纠结了,开始边学习边做笔记咯。
OC类的定义和声明
@interface NewClassName: ParentClassName
{
//实例变量;
//...
}
//方法的声明;
//...
@end
@implementation NewClassName
//方法的实现
{
//code
}
@end
用@interface来声明一个类,冒号表示继承关系
冒号后面的是类的父类
NSObject是所用类的父类
@end关键字结束
@interface Person : NSObject
{
//实例变量声明
int identify;
int age;
}
//方法声明
-(id)initWithAge:(int)_age identify:(int) _identify;
-(int)getIdentify;
-(int)getAge;
-(void)setAge:(int)_age;
类的声明放在“类名+.h”文件中
类的声明主要有两部分组成:实例变量和方法
声明实例变量的格式:变量类型 变量的名称
各种数据类型的初始值
Byte 0
short 0
int 0
long 0L
char \u0000'
float 0.0F
double 0.0D
Boolean FALSE
所有指针类型 nil
方法类型 方法名 参数名
- (void) method: (int) arguments;
返回类型 参数类型
"-"表示实例方法, "+"表示类方法,返回类型为空,方法名为"method:",最后这个方法的参数是一个整型的参数,arguments是参数的名称。
OC语言中采用特定的语言调用类或者实例(对象)的方法称为发送消息或方法调用。
OC中方法的调用有两种:
[类名或对象名 方法名];
对象名.方法名;
左括号紧跟着类名或者该类的实例,空格后面是要执行的方法,最后使用右括号和分号来终止
OC语言中除基本数据类型之外的变量类型都称为指针类型
OC中的对象是通过指针对其操作的
//声明了一个NNString类型的指针变量,但它并没有志向任何一个对象
NSString *s;
//使用alloc方法创建一个NSString
//类型的对象并用s指向它
//以后可以通过s完成对其的操作
s = [[NSString alloc]initWithString:@"Hello iPhone4S"];
OC中的对象通过指针来声明。如:ClassA *object;
OC中对象的创建,使用alloc来创建一个对象。编译器会给object对象分配一块可用的内存地址。然后需要对对象进行初始化即调用init方法,这样这个对象才可以使用。如:
Person *person = [Person alloc];
person = [person init];
Class *object = [[Class alloc] init];
self = [super init];
子类要初始化,先要对父类初始化
在init方法中,若要父类完成所需的一次性初始化,需要调用[super init],init方法返回的值(id型数据),描述了被初始化的对象
将[super init]的结果赋给self是Objective-C的标准习惯,这么做是为了防止父类在初始化过程中返回对象不同于原先创建的对象
-(id) init
{
self = [super init];
if(self)
{
//code
}
return self;
}
在一个类里面,具有最完整的的初始化参数的初始化方法通常就是制定初始化方法。子类的初始化方法必须调用父类的制定初始化方法,通过super发送相应的消息初始化父类。相反,他们将调用参数比自己多的其他初始化方法(通过向self发送消息),并为自身没有的参数提供初始值。在此调用序列中,最终将会调用到制定初始化方法,完成整个初始化过程。