ObjectiveC学习笔记Word格式文档下载.docx
- 文档编号:5829335
- 上传时间:2023-05-05
- 格式:DOCX
- 页数:83
- 大小:8.48MB
ObjectiveC学习笔记Word格式文档下载.docx
《ObjectiveC学习笔记Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《ObjectiveC学习笔记Word格式文档下载.docx(83页珍藏版)》请在冰点文库上搜索。
@autoreleasepool{
inti=100;
NSLog(@"
i=%d"
i);
}
for(inti=0;
i<
10;
i++){
Nslog(@"
ival:
%d"
}
实例变量:
方法外部、类的内部定义的变量
@interfacePerson:
NSObject
intage;
intsex;
@end
按所属的数据类型划分:
基本数据类型变量
指针数据类型变量
OC局部变量与成员变量
方法体内部声明的变量(包括形参)称为局部变量:
方法体内部是指与方法对应的大括号内部
方法体外,类体内声明的变量为“实例变量”或者“成员变量”
@implementationPerson
-(void)getAge{
inta;
intb=a+5;
//编译警告,变量a还未被初始化
floatc=2.8;
OC数据类型
基本数据类型:
数值型:
整数类型int
浮点型float,double
字符串(char)
布尔型
空类型(void)
指针数据类型:
类(class)
id
C和OC的基本数据类型
int:
声明整型变量short:
声明短整型变量或函数
double:
声明双精度变量sigend:
声明有符号类型变量
float:
声明浮点型变量struct:
声明结构体变量
char:
声明字符型变量union:
声明共用体(联合)数据类型
id:
通用的指针类型unsigend:
声明无符号类型变量
enum:
声明枚举类型void:
声明函数无返回值或无参数
long:
声明长整型变量或函数
数据类型格式化说明符
数据类型
OC关键字
格式说明引导符
整型
int
%d、%i
浮点型
float
%f
短整型
shortint
%hd、%hi
双精度型
double
长类型
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码)
值
符号
空字符
34
91
(
32
空格
45
-
92
\
33
!
46
.
93
]
“
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'
i:
f:
%.2f"
f);
//float类型保2位小数
d:
%e"
d);
c:
%c"
c);
//打印x对应的ASCII值
ASCIIc=%d"
//120
//打印基本数据类型所占用的字节
sizeOfi=%ld"
sizeof(i));
sizeOff=%ld"
sizeof(f));
sizeOfd=%ld"
sizeof(d));
sizeOfc=%ld"
sizeof(c));
基本数据类型转换
作业:
加、减、乘、除
while(flag){
chari;
floatnumber1,number2;
printf("
a表示加法:
\n"
);
b表示减法:
c表示乘法:
d表示除法:
q表示退出:
scanf("
&
i);
switch(i){
case'
a'
请输入第一个数:
%f"
number1);
请输入第二个数:
number2);
%.1f+%.1f=%.1f\n"
number1,number2,number1+number2);
break;
b'
%.1f-%.1f=%.1f\n"
number1,number2,number1-number2);
c'
%.1f*%.1f=%.1f\n"
number1,number2,number1*number2);
d'
%.1f/%.1f=%.1f\n"
number1,number2,number1/number2);
q'
flag=false;
已经退出\n"
default:
OC类的声明
@interfacePerson:
//实例变量声明
intidetify;
//方法声明
-(id)initWithAge:
(int)_ageidentify:
(int)_identify;
-(int)getIdentify;
-(int)getAge;
-(void)setAge:
(int)_age;
OC类的实例变量
OC的方法声明
OC中方法的调用
类的实现
(int)_identify
if(self=[superinit]){
age=_age;
idetify=_identify;
returnself;
-(int)getIdentify
returnidetify;
-(int)getAge
returnage;
(int)_age
OC面向对象的基本概念-指针
对象的创建和使用
类与对象的关系
对象的初始化
初始化方法的实现
指定初始化方法
内存分析
(1)
#import"
Person.h"
intmain(intargc,constchar*argv[])
//insertcodehere...
Hello,World!
"
//对象创建并初始化-----------------------
//Person*person;
//nil
//person=[[Personalloc]init];
//0x100102d40
//NSLog(@"
person:
%p"
person);
//对象创建并初始化,内存分析------------------
Person*person=[[Personalloc]initWithAge:
30identify:
321123];
personAge=%d"
[persongetAge]);
intage=28;
[personsetAge:
age];
personAge2=%d"
++age];
personAge3=%d"
person栈内存地址:
return0;
约定俗称的命名规则
类名首字母大写
变量名和方法名首字母小写
使用驼峰标示
内存分析
(2)
//Person.h
//PersonAlloc
//CreatedbyLCSon14-4-16.
//Copyright(c)2014年LCS.Allrightsreserved.
#import<
Foundation/Foundation.h>
-(void)changeAge:
-(void)changeInfo:
(Person*)_person;
-(void)changed:
//Person.m
_age=38;
(Person*)_person
_person=[[Personalloc]initWithAge:
22identify:
894455656];
_person:
%page:
_person,[_persongetAge]);
[_personsetAge:
22];
//main.m
Person*p1=[[Personalloc]initWithAge:
3243242312];
intage=20;
Person*p2=[[Personalloc]initWithAge:
28identify:
455656231];
//age的值不变
[p1changeAge:
age:
age);
//p1的值不变
[p1changeInfo:
p1];
behind_person:
p1,[p1getAge]);
//真正改变p2对象的值
[p1changed:
p2];
p2age:
[p2getAge]);
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文件里
设置器和访问器
intmyNumber;
//实例变量
-(int)myNumber;
-(void)setMyNumber:
(int)_number;
-(void)printInfo;
//get方法
-(int)myNumber
returnmyNumber;
//set方法
(int)_number
myNumber=_number;
//打印本类的信息
-(void)printInfo
Personnumberis:
%d"
myNumber);
Person*person=[[Personalloc]init];
[personsetMyNumber:
100];
Personnumber:
[personmyNumber]);
Property属性
oc2.0简化设置器和访问器。
注意两个关健字“@property”“@synthesize”
NSO
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- ObjectiveC 学习 笔记