ObjectiveC学习笔记.docx

上传人:b****1 文档编号:3275674 上传时间:2023-05-05 格式:DOCX 页数:83 大小:8.48MB
下载 相关 举报
ObjectiveC学习笔记.docx_第1页
第1页 / 共83页
ObjectiveC学习笔记.docx_第2页
第2页 / 共83页
ObjectiveC学习笔记.docx_第3页
第3页 / 共83页
ObjectiveC学习笔记.docx_第4页
第4页 / 共83页
ObjectiveC学习笔记.docx_第5页
第5页 / 共83页
ObjectiveC学习笔记.docx_第6页
第6页 / 共83页
ObjectiveC学习笔记.docx_第7页
第7页 / 共83页
ObjectiveC学习笔记.docx_第8页
第8页 / 共83页
ObjectiveC学习笔记.docx_第9页
第9页 / 共83页
ObjectiveC学习笔记.docx_第10页
第10页 / 共83页
ObjectiveC学习笔记.docx_第11页
第11页 / 共83页
ObjectiveC学习笔记.docx_第12页
第12页 / 共83页
ObjectiveC学习笔记.docx_第13页
第13页 / 共83页
ObjectiveC学习笔记.docx_第14页
第14页 / 共83页
ObjectiveC学习笔记.docx_第15页
第15页 / 共83页
ObjectiveC学习笔记.docx_第16页
第16页 / 共83页
ObjectiveC学习笔记.docx_第17页
第17页 / 共83页
ObjectiveC学习笔记.docx_第18页
第18页 / 共83页
ObjectiveC学习笔记.docx_第19页
第19页 / 共83页
ObjectiveC学习笔记.docx_第20页
第20页 / 共83页
亲,该文档总共83页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

ObjectiveC学习笔记.docx

《ObjectiveC学习笔记.docx》由会员分享,可在线阅读,更多相关《ObjectiveC学习笔记.docx(83页珍藏版)》请在冰点文库上搜索。

ObjectiveC学习笔记.docx

ObjectiveC学习笔记

------------------------------------------------------------------------------------------------------------------------------------------------------------------

OC基础语法

标示符:

OC语言中对各种变量、方法和类等要素命名时使用的字符序列称为标示符。

OC标示符有如下命名规则:

1.标示符由字母、下划线“_”、美元“$”和数字组成

2.标示符必须以字母、下划线、美元符号开头

3.OC标示符大小写敏感,长度无限制

约定俗成:

OC标示符选取要“见名知意”,并且不能与OC中保留字重名。

合法标示符:

ZhangSan、Dog、_988、$as_34d

非法标示符:

if、GirL*#、

关键字:

OC中一些具有特定含义的,系统专门使用的字符串为“保留字”,或者叫“关健字”(keyword)

OC中的关键字全部都是小写

int、double、struct、break、long、aout、switch、case、enum、register、typedef、char、extern、return、union、const、float、short、unsigned、continue、for、signed、void、default、goto、sizeof、volatile、do、while、static、if、else

OC常量:

OC中的常量值用字符串表示,区分不同的数据类型

1.如整型常量:

3456

2.实型常量:

3.1415926

3.字符常量:

’a’

4.逻辑常量:

ture、false

5.字符串常量:

”helloiphone”

注意:

区分字符常量和字符串常量

OC变量:

OC变量是程序中最基本的存储单元,基要素包括变量名,变量类型和作用域。

TypevarName[=value];

例如:

Inti=580;

floatf=12.12f;

Doubled=0.795;

NSString*s=@”helloiphone”;

从本质上讲,变量其实是内存中的一小块区域,使用变量名来访问这块区域,因此每一个变量使用前必须要先申请(声明),然后必须进行赋值(填充内容),才能使用。

程序的执行过程

1.Load代码到内存区

2.从Main函数开始执行

3.执行过程中的内存管理

OC变量的分类

按被声明的位置划分:

局部变量:

方法或语句块内部定义的变量

intmain(intargc,char*argv[])

{

@autoreleasepool{

inti=100;

NSLog(@"i=%d",i);

}

for(inti=0;i<10;i++){

Nslog(@"ival:

%d",i);

}

}

实例变量:

方法外部、类的内部定义的变量

@interfacePerson:

NSObject

{

intage;

intsex;

}

@end

按所属的数据类型划分:

基本数据类型变量

指针数据类型变量

OC局部变量与成员变量

方法体内部声明的变量(包括形参)称为局部变量:

方法体内部是指与方法对应的大括号内部

方法体外,类体内声明的变量为“实例变量”或者“成员变量”

@implementationPerson

-(void)getAge{

inta;

intb=a+5;//编译警告,变量a还未被初始化

floatc=2.8;

}

@end

OC数据类型

基本数据类型:

数值型:

整数类型int

浮点型float,double

字符串(char)

布尔型

空类型(void)

指针数据类型:

类(class)

id

C和OC的基本数据类型

int:

声明整型变量short:

声明短整型变量或函数

double:

声明双精度变量sigend:

声明有符号类型变量

float:

声明浮点型变量struct:

声明结构体变量

char:

声明字符型变量union:

声明共用体(联合)数据类型

id:

通用的指针类型unsigend:

声明无符号类型变量

enum:

声明枚举类型void:

声明函数无返回值或无参数

long:

声明长整型变量或函数

数据类型格式化说明符

数据类型

OC关键字

格式说明引导符

数据类型

OC关键字

格式说明引导符

整型

int

%d、%i

浮点型

float

%f

短整型

shortint

%hd、%hi

双精度型

double

%f

长类型

longint

%ld、%li

长双精度类

longdouble

%lf

无符号短整型

unsignedint

%u

无短整型

unsignedshort

%hu

无符号长整形

unsignedlong

%lu

整数类型

Oc中整数类型用int表示,格式化符号用%i或d%来表示

比如:

inta=100;

Oc语言的整型常量默认为int型,声明long型常量可以后加‘l’或‘L’,

如:

intb=600;//正确Longc=88888888888L;

类型

占用存储空间

值域范围

Byte

1个字节

-128~127

Short

2个字节

-215~215-1

Int

4个字节

-231~231-1

long

8个字节

-263~263-1

浮点类型

浮点类型的变量可以存储包括小数的值

oc中有两种浮点类型

float有效数字为6~7位,格式化说明符号用%f表示

double有效数字为15~16位,格式化说明符号用%f,%e或%g表示

oc中浮点型常里默认为double型,如果要声明一个常量为float,在数字的后面加f或F。

doublem=3.14159;//正确floatf=3.14f;

下面列出oc的各种浮点类型

类型

占用存储空间

值域范围

Float

4字节

-3.403E38

Double

8字节

-1.798E308~1.798E

字符串char

char型数据用来表示通常意义上的“字符”,格式化说明符用%c表示

字符常量为用单引号括起的单个字符,例如:

characher=’a’;charb=’0’;charcChar=’苹’;值域范围:

-128~`127

“\n”,oc编译器把这个当作单个字符

unsignedchar值域范围:

0~255

oc字符采用Unicode编码,每个字符占两个字节,因而可用十六进制编码形式表示

例如:

Charc1=’\u0061’;

注:

Unicode是全球语言统一编码

char类型(ASCII码)

符号

符号

符号

0

空字符

34

91

32

空格

45

-

92

\

33

!

46

.

93

]

34

47

/

94

35

#

48~57

0~9

95

-

36

$

58

:

96

`

37

%

59

;

97~122

a~z

38

&

60

<

123

{

39

61

=

124

|

40

62

>

125

}

41

63

?

126

~

42

*

64

@

127

DEL(Delete键)

43

+

65~90

A~Z

逻辑型Boolean

Boolean类型指的是用于存储真值和假值的变量,一般用于程序流程控制。

Boolean类型数据允许取值true或false,也可以是0或非0的整数替代true和false,这点和java语言不同。

实例:

Booleanflag=true;

If(flag)

{

NSLog(@”HelloiPhone”);

}

限定词

longint:

声明变量xx为long的整型变量。

格式化字符为%li,如:

longinta;

longlongint:

声明变量xx为longlong的整型变量,格式化符%lli,如:

longlongintb;

longdouble:

跟int基本相同;

unsignedint:

声明无符号的整型变量。

如:

unsignedintc;

signedint:

声明有符号的整型变量。

如:

signedintd;

void类型

告诉编译器没有任何范围类型的值

不能像其它数据类型一样来声明变量

例如:

voidi=10;//错误

Void通常与方法一起搭配使用,比如:

-(void)test

{

//code;

}

id类型

Id类型是oc中独有的数据类型,它可以存储任何类型的对象,从某种意义上说,它就是一般的对象类型。

将number声明为id类型的变量。

如:

idnumber

格式化说明符:

%p

DataType

//基本数据类型

inti=10;

floatf=2.12f;

doubled=34.123e+11;

charc='x';

NSLog(@"i:

%d",i);

NSLog(@"f:

%.2f",f);//float类型保2位小数

NSLog(@"d:

%e",d);

NSLog(@"c:

%c",c);

//打印x对应的ASCII值

NSLog(@"ASCIIc=%d",c);//120

//打印基本数据类型所占用的字节

NSLog(@"sizeOfi=%ld",sizeof(i));

NSLog(@"sizeOff=%ld",sizeof(f));

NSLog(@"sizeOfd=%ld",sizeof(d));

NSLog(@"sizeOfc=%ld",sizeof(c));

基本数据类型转换

作业:

加、减、乘、除

Booleanflag=true;

while(flag){

chari;

floatnumber1,number2;

printf("a表示加法:

\n");

printf("b表示减法:

\n");

printf("c表示乘法:

\n");

printf("d表示除法:

\n");

printf("q表示退出:

\n");

scanf("%c",&i);

switch(i){

case'a':

printf("请输入第一个数:

\n");

scanf("%f",&number1);

printf("请输入第二个数:

\n");

scanf("%f",&number2);

printf("%.1f+%.1f=%.1f\n",number1,number2,number1+number2);

break;

case'b':

printf("请输入第一个数:

\n");

scanf("%f",&number1);

printf("请输入第二个数:

\n");

scanf("%f",&number2);

printf("%.1f-%.1f=%.1f\n",number1,number2,number1-number2);

break;

case'c':

printf("请输入第一个数:

\n");

scanf("%f",&number1);

printf("请输入第二个数:

\n");

scanf("%f",&number2);

printf("%.1f*%.1f=%.1f\n",number1,number2,number1*number2);

break;

case'd':

printf("请输入第一个数:

\n");

scanf("%f",&number1);

printf("请输入第二个数:

\n");

scanf("%f",&number2);

printf("%.1f/%.1f=%.1f\n",number1,number2,number1/number2);

break;

case'q':

flag=false;

printf("已经退出\n");

break;

default:

break;

}

}

OC类的声明

@interfacePerson:

NSObject

{

//实例变量声明

intidetify;

intage;

}

//方法声明

-(id)initWithAge:

(int)_ageidentify:

(int)_identify;

-(int)getIdentify;

-(int)getAge;

-(void)setAge:

(int)_age;

@end

OC类的实例变量

OC的方法声明

OC中方法的调用

类的实现

@implementationPerson

-(id)initWithAge:

(int)_ageidentify:

(int)_identify

{

if(self=[superinit]){

age=_age;

idetify=_identify;

}

returnself;

}

-(int)getIdentify

{

returnidetify;

}

-(int)getAge

{

returnage;

}

-(void)setAge:

(int)_age

{

age=_age;

}

@end

OC面向对象的基本概念-指针

对象的创建和使用

类与对象的关系

对象的初始化

初始化方法的实现

指定初始化方法

内存分析

(1)

#import"Person.h"

intmain(intargc,constchar*argv[])

{

@autoreleasepool{

//insertcodehere...

NSLog(@"Hello,World!

");

//对象创建并初始化-----------------------

//Person*person;//nil

//person=[[Personalloc]init];//0x100102d40

//NSLog(@"person:

%p",person);

//对象创建并初始化,内存分析------------------

Person*person=[[Personalloc]initWithAge:

30identify:

321123];

NSLog(@"personAge=%d",[persongetAge]);

intage=28;

[personsetAge:

age];

NSLog(@"personAge2=%d",[persongetAge]);

[personsetAge:

++age];

NSLog(@"personAge3=%d",[persongetAge]);

NSLog(@"person栈内存地址:

%p",person);

}

return0;

}

约定俗称的命名规则

类名首字母大写

变量名和方法名首字母小写

使用驼峰标示

内存分析

(2)

//Person.h

//PersonAlloc

//CreatedbyLCSon14-4-16.

//Copyright(c)2014年LCS.Allrightsreserved.

#import

@interfacePerson:

NSObject

{

//实例变量声明

intidetify;

intage;

}

//方法声明

-(id)initWithAge:

(int)_ageidentify:

(int)_identify;

-(int)getIdentify;

-(int)getAge;

-(void)setAge:

(int)_age;

-(void)changeAge:

(int)_age;

-(void)changeInfo:

(Person*)_person;

-(void)changed:

(Person*)_person;

@end

//Person.m

//PersonAlloc

//CreatedbyLCSon14-4-16.

//Copyright(c)2014年LCS.Allrightsreserved.

#import"Person.h"

@implementationPerson

-(id)initWithAge:

(int)_ageidentify:

(int)_identify

{

if(self=[superinit]){

age=_age;

idetify=_identify;

}

returnself;

}

-(int)getIdentify

{

returnidetify;

}

-(int)getAge

{

returnage;

}

-(void)setAge:

(int)_age

{

age=_age;

}

-(void)changeAge:

(int)_age

{

_age=38;

}

-(void)changeInfo:

(Person*)_person

{

_person=[[Personalloc]initWithAge:

22identify:

894455656];

NSLog(@"_person:

%page:

%d",_person,[_persongetAge]);

}

-(void)changed:

(Person*)_person

{

[_personsetAge:

22];

}

@end

//main.m

//PersonAlloc

//CreatedbyLCSon14-4-16.

//Copyright(c)2014年LCS.Allrightsreserved.

#import

#import"Person.h"

intmain(intargc,constchar*argv[])

{

@autoreleasepool{

//insertcodehere...

NSLog(@"Hello,World!

");

Person*p1=[[Personalloc]initWithAge:

30identify:

3243242312];

intage=20;

Person*p2=[[Personalloc]initWithAge:

28identify:

455656231];

//age的值不变

[p1changeAge:

age];

NSLog(@"age:

%d",age);

//p1的值不变

[p1changeInfo:

p1];

NSLog(@"behind_person:

%page:

%d",p1,[p1getAge]);

//真正改变p2对象的值

[p1changed:

p2];

NSLog(@"p2age:

%d",[p2getAge]);

}

return0;

}

self和super关键字

self指的是类对象本身

super是父类对象本身

self用来调用本类对象的方法

super调用父类的方法

@class和#import

Import会包含这个类的所有信息,包括实体变量和方法,而@class只是告诉编译器,其后面声明的名称是类的名称,至于这些类是如何定义的,暂时不用考虑,后面会再告诉你。

在头文件中,一般只需要知道被引用的类的名称就可以了。

不需要知道其内部的实体变量和方法,所以在头文件中一般使用@class来声明这个名称是类的名称。

而在实现类里面,因为会用这个引用类的内部的实体变量和方法,所以需要使用#import来包含这个被引用类的头文件。

如果有循环依赖关系,如A->B,B->A这样的相互依赖关系,如果使用#import来相互包含,那么就会出现编译错误,如果使用@class在两个类的头文件中相互声明,则不会有编译错误出现。

所以,一般来说,@class是放在interface中的,只是为了在interface中引用这个类,把这个类作为一个类型来用的。

在实现个接口的实现类中,如果需要引用这个类的实体变量或者方法之类的,还是需要import

@class用在.h文件里

#import用在.m文件里

设置器和访问器

#import

@interfacePerson:

NSObject

{

intmyNumber;//实例变量

}

-(int)myNumber;

-(void)setMyNumber:

(int)_number;

-(void)printInfo;

@end

#import"Person.h"

@implementationPerson

//get方法

-(int)myNumber

{

returnmyNumber;

}

//set方法

-(void)setMyNumber:

(int)_number

{

myNumber=_number;

}

//打印本类的信息

-(void)printInfo

{

NSLog(@"Personnumberis:

%d",myNumber);

}

@end

#import

#import"Person.h"

intmain(intargc,constchar*argv[])

{

@autoreleasepool{

//insertcodehere...

NSLog(@"Hello,World!

");

Person*person=[[Personalloc]init];

[personsetMyNumber:

100];

NSLog(@"Personnumber:

%d",[personmyNumber]);

}

return0;

}

Property属性

oc2.0简化设置器和访问器。

注意两个关健字“@property”“@synthesize”

#import

@interfacePerson:

NSO

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 人文社科 > 法律资料

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2