预览加载中,请您耐心等待几秒...
1/7
2/7
3/7
4/7
5/7
6/7
7/7

在线预览结束,喜欢就下载吧,查找使用更方便

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

IOS开发学习总结objectivec面向对象之——类和对象(下)-电脑资料  知识点安插:如果访问权限允许,objective-c允许直接通过对象来访问成员变量,IOS开发学习总结objectivec面向对象之——类和对象(下)。语法格式:对象->成员变量名;对象与指针  这里沿用上篇objective-c面向对象之——类和对象(上)的代码。  在FKPersonTest.m中,有这样的代码:  FKPerson*person=[[FKPersonalloc]init];  这行代码产生了2个东西,一个是person变量,一个是FKPerson对象。这个FKPerson对象被赋给person变量。  从类的定义来看,FKPerson对象包含3个成员变量(2个暴露,1个隐藏),成员变量是需要内存来存储。因此,创建FKPerson对象时,必须有对应的内存来存储FKPerson对象的成员变量。FKPerson对象在内存里的存储示意图:    有图可以看出,FKPerson对象由多块内存组成,不同的内存块存储了不同成员变量。当把FKPerson对象赋值给FKPerson*变量时,其实是把FKPerson对象在内存中的首地址赋给了FKPerson*变量。FKPerson*类型的变量指向实际的对象。  本质上说,类是一种指针类型的变量。因此,程序定义的FKPerson*类型只是存放一个地址值,它被保存在该main())函数的动态存储区,它指向实际的FKPerson对象,而真正的FKPerson对象存放在堆(heap)内存里。如下示意图:    当一个对象被成功创建后,这个对象将保存在堆内存中,objective-c不允许直接访问堆内存中的对象,只能通过该对象的指针变量来访问对象。就是说,所有的对象都只能通过指针变量来访问它们。堆内存里的对象可以有多个指针,即多个指针变量可以指向同一个变量。  如果堆内存里的对象没有任何变量指向该对象,那么程序将无法再访问该对象,如果程序员不释放该对象所占用的内存,就会造成内存泄露。self关键字  self关键字总是指向调用该方法的对象。它的最大作用是:让类中的一个方法访问该类的另一个方法或成员变量。  self总是代表当前类的对象,当self出现在某个方法体中时,它所代表的对象是不确定的。但它的类型是确定的:它代表的对象只能是当前类的示例。当这个方法被调用时,它代表的对象才能确定下来:谁调用该方法,self就代表谁。  示例代码:  头文件:FKDog.h<codeclass="hljs"bjectivec="">#import<foundationfoundation.h="">@interfaceFKDog:NSObject//定义一个jump方法-(void)jump;//定义一个run方法,run方法需要借助jump方法-(void)run;@end</foundation></code>  实现文件:FKDog.m<codeclass="hljs"bjectivec="">#importFKDog.h@implementationFKDog//实现一个jump方法-(void)jump{NSLog(@正在执行jump方法);}//实现一个run方法,run方法需要借助jump方法-(void)run{//FKDog*d=[[FKDogalloc]init];//[djump];[selfjump];NSLog(@正在执行run方法);}@end</code>  FKDogTest.m文件:<codeclass="hljs"java="">#import<foundationfoundation.h="">#importFKDog.hintmain(intargc,char*argv[]){@autoreleasepool{//创建Dog对象FKDog*dog=[[FKDogalloc]init];//调用Dog对象的run方法[dogrun];}}</foundation></code>用self区分重名的局部变量和成员变量  局部变量和成员变量重名的情况下,局部变量会隐藏成员