OC学习笔记(五)--对象与函数
来源:互联网 发布:cctv软件下载 编辑:程序博客网 时间:2024/05/19 18:18
#import <Foundation/Foundation.h> @interface Person : NSObject { float weight; int age; } - (void) talk; @end @implementation Person - (void) talk { NSLog(@"对方(年龄%d体重%f)不想跟你说话,并向你扔了一个Hello world。。",age,weight);
}
@end
例一:
void test(int a,float w){ a = 2; w = 8.0;}
<pre name="code" class="objc">int main(){ Person *p = [Person new]; p->age = 30; p->weight = 60.0; test(p->age,p->weight); [p talk]; return 0;}
运行结果:对方(年龄30体重60.0)不想跟你说话,并向你扔了一个Hello world。。
原因:由于test中值传递,改变的是a和w的值,并没有改变对象中的属性值;
例二:
void test1(Person *p){ p->weight = 50.0;}
int main(){ Person *p = [Person new]; p->age = 30; p->weight = 60.0; // test(p->age,p->weight); test1(p); [p talk]; return 0;}
运行结果:对方(年龄30体重50.0)不想跟你说话,并向你扔了一个Hello world。。
原因:test1中参数p已经指向main中定义的p,所以修改有效;
例三:
void test2(Person *ps){ Person *per = [Person new]; per->age = 70; per->weight = 40.0; ps = per; ps->weight = 48.5;}
int main(){ Person *p = [Person new]; p->age = 30; p->weight = 60.0; // test(p->age,p->weight); // test1(p); test2(p); [p talk]; return 0;}
运行结果:对方(年龄30体重60.0)不想跟你说话,并向你扔了一个Hello world。。
原因:由于test2函数中指针ps已经指向了per的值,已经与main中的p对象无关,所以修改无效;
总结:只要搞清楚指针的指向,一切就容易了,指向谁就找谁;必要的时候可以自己在草稿纸上画一个内存指向图,一目了然;
另外,注意一个问题:在OC中,对象是不会自动回收的,需要手动释放,所以只要申请了一个对象,都会留在内存中,等着你释放,后续将会继续学习有关OC中内存管理的知识。
0 0
- OC学习笔记(五)--对象与函数
- ES6学习笔记(五)--函数与对象
- OC学习笔记(三)--类与对象
- OC学习笔记(七)--方法与函数的区别
- OC对象与函数
- OC对象与函数
- [OC学习笔记]对象
- oc学习笔记(五)面向对象-类方法,self,NSString类
- JavaScript学习笔记(五)——函数对象2
- 学习笔记:OC面向对象(2)
- OC学习笔记(四)--对象指针
- 黑马视频学习笔记-OC-对象方法和函数区别
- OC学习笔记之面向过程与面向对象
- oc学习笔记(二)面向对象-类和对象
- oc学习之类与对象
- OC学习笔记,构造函数
- OC学习笔记02-OC中的面向对象语法表现 - 封装 继承与多态
- OC学习笔记五---OC特有语法一
- 【C语言】给定两个整型变量的值,将两个值的内容进行交换(不同方法)
- 【C语言】编写函数实现:100-200素数的输出
- 【C语言】求1000-2000年的闰年,并统计个数
- Python之numpy教程(四):数据处理、绘图、数据统计分析
- 【C语言】交换两个数组内容(数组一样大)
- OC学习笔记(五)--对象与函数
- iOS 获取地图视图中心点经纬度
- 获取一个数二进制序列中所有的偶数位和奇数位,分别输出二进制序列。
- 输出一个整数的每一位
- C语言:计算1/1-1/2+1/3-1/4+1/5 …… + 1/99 - 1/100 的值
- C语言:编写程序数一下 1到 100 的所有整数中出现多少次数字 9
- 在屏幕上输出图案:*与空格拼出的菱形
- C语言:求出0~999之间的所有“水仙花数”并输出
- C语言:每隔一秒,动态首尾依次输出一个字符,直到全部输出