objectives-c基本语法。

1.用@interface来声明一个类,冒号表示继承关系,冒号后面是父类。NSobject是所有类的父类,@end关键字表示结束。

  类的声明放在“类名+.h”文件夹中。

  类的声明主要由两部分组成:实例变量和方法

  声明实例变量的格式:变量类型  变量名称 例如:int hello

实例变量可以使用oc语言中的任何一种数据类型(包括基本类型和指针类型)

在声明实例变量的时候不能为其初始化,系统默认会初始化

实力变量的默认作用域范围是整个类

实例变量 默认值
Byte 0
short 0
int 0
long 0L
char \u000
float 0.0F
double 0.0D
Boolean FALSE
所有指针类型 nil

2.方法的声明

oc中的方法和其他语言一样,是一段用来完成特定功能的代码段:声明的格式为:

- (void)  method:   (int)  arguments:

“-”表示实例方法,“+”表示类方法,返回类型为空,方法名为“method:”(一定要有这个冒号),最后这个方法的参数是一个整型的参数,arguments是一个参数的名称。

形式参数:在方法被调用的时候用于接收外界输入的数据

实参:调用方法时实际传给方法的数据

返回值:方法在执行完后返还给调用它的环境的参数

返回值类型:事先约定的返回值的数据类型,如无返回值,必须需给出返回值类型void。

实参的数目、数据类型和顺序必须和所调用的方法生命的形参列表匹配。

return语句终止方法的运行并指定要返回的数据。

oc中进行方法调用中传递参数时,遵循值传递的原则:基本数据类型传递的是该数据本身,指针类型传递是对象的指针,而不是对象本身。

3.方法的调用

oc语言中采用特定的语言调用类或者实例(对象)的方法称为发送消息或方法调用。

oc中方法的调用有两种:

【类名或对象名  方法名】;

对象名,方法名;(点语法)

[ClassOrlnstance method];

[ClassOrlnstance method:arg1];

[ClassOrlnstance method1:arg1] method2:arg2];

在这条语句中,左括号紧跟类名或者该类的实例,空格后面主要是执行的方法,最后使用右括号和分号终止。

一个实例或者类本身需要传输多个参数

这个方法的方法名称是:

嵌套发送消息

 

4.指针

oc语言中除了基本数据类型之外的变量类型都称为指针类型。

oc中的对象是通过指针对齐操作的。

类是静态的概念,存放在代码区

对象是alloc出来的存放在堆区,类的每个实例变量在不同的对象中都有不同的值(静态变量除外)

方法也只是在被调用的时候,程序运行的时候才占用内存。

oc中对象,通过指针来声明。如:ClassA *object;

oc中对象的创建,使用alloc来创建一个对象。编译器会给object对象分配一块可用的内存地址。然后需要对对象进行初始化即条用init方法,这样这个对象才可以使用。如:

Person *person =[Person alloc];

person = [person init];

同一类的每个对象有不同的实例变量的存储空间。

同一类的每个对象共享该类的方法。

方法嵌套的形式来调用,如:Class *object =[[ClassA alloc] init];

5.初始化方法

image

对象必须先创建,然后初始化,才能使用。

NSObject *object = [[NSObject alloc] init];

首先为对象分配内存地址,为初始化做准备。初始化石对象创建过程中将新分配对象的妆台设置为合理的初始值、使之处于可用状态的阶段。通过约定,我们要求初始方法以init开头,并且在成功完成初始化后,返回一个动态类型对象(id),如果失败则返回nil。初始方法可以包含一个或多个参数用于指定初始值。如下所示:

image

image

在init方法中,若要父类完成所需的一次性初始化,需要条用[super init],init方法返回的值(id型数据),描述了被初始化的对象。

将[super init]的结果赋给self是Object-C的标准惯例,这么做是为了防止父类在初始化过程中返回的对象不同于原先创建的对象。

在一个类里面,具有最完整的初始化参数的初始化方法通常就是指定初始化方法。子类的初始化方法必须调用父类的指定初始化方法,通过向super发送响应的消息初始化父类。相反,他们将调用参数比自己多的其他初始化方法(通过self发送消息),并为自身没有的参数提供初始值。在此调用序列中,最终将会条用到指定初始化方法,完成整个初始化过程。

image

当没有指定初始化方法的时候,编译器为类自动添加init方法,如果有,编译器就不在添加。

Person *person = nil;

person = [[Person alloc] init];

image

6.内存分析

image

7.数据类型格式化说明符

数据类型 OC关键字 格式说明引导符
整型 int %d、%i
短整型 short int %hd、%hi
长整型 long int %ld、%li
无符号整型 unsigned int %u
无符号短整型 unsigned short %hu
无符号长整型 unsigned long %lu
类型名 OC关键字 格式引导说明符
浮点型 float %f
双精度型 double %f
长双精度类 long double %lf
字符型 char %c

int类型占用存储空间

image

  浮点类型占用存储空间

image

字符串char类型占用存储空间

 

posted @ 2014-08-24 14:29  Cherryme  阅读(382)  评论(0编辑  收藏  举报