黑马入门教程笔记02-OC
来源:互联网 发布:diy彩铃软件 编辑:程序博客网 时间:2024/06/13 12:01
<span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);">1、用结构体作为类的变量</span>
#import <Foundation/Foundation.h>//生日的结构体typedef struct{ //年月日 int _year; int _month; int _day;}MyDate;@interface Student:NSObject{@public; NSString *_name; MyDate _birthday;//结构体变量,int每个4个字节,共12个字节// MyDate *_bp;<span style="background-color: rgb(255, 255, 0);">//不用结构体指针变量,会多开销很多堆区空间,如系统会自动添加上*isa指针等浪费空间,一个指针占用8个字节</span> }@end@implementation Student@endint main(int argc, const char * argv[]) { @autoreleasepool { Student *stu = [Student new]; //内存代码区,保存类属性和方法 //内存堆区,_name = null, _birthday结构体,每个成员初始化为0 stu->_name = @"张三";// stu->_birthday = {1990,9,12};<span style="background-color: rgb(255, 255, 0);">//错误,不能识别{...}为结构体,所以要在前面加强制转换</span> //第一种方法 stu->_birthday = (MyDate){1990,9,12}; //第二种方法,定义一个结构体变量 MyDate d1 = {1989,1,11}; stu->_birthday = d1; //第三种方法,逐个赋值 stu->_birthday._year = 1988; stu->_birthday._month = 9; stu->_birthday._day = 12; NSLog(@"%d",stu->_birthday._year); } return 0;}
2、字符串长度
在OC字符串中认为中英文都是一个字符,都是占用一个字节;
在C语言一个汉字占用3个字节(UTF-8编码)。
NSString *str = [NSString new];str = @"班长的节操";NSLog(@"%ld",[str length]);//5个char *str2 = "班长的节操";printf("%ld",strlen(str2));//15个
3、+类方法的好处
//第一种方法,需要在堆区分配三个变量_num1,_num2,_result Caculator *cal = [Caculator new]; cal->_num1 = 10;//在堆区分配三个变量_num1,_num2,_result cal->_num2 = 3; [cal add]; NSLog(@"%.2f",cal->_result); //第二种方法,不需要在堆区分配空间三个变量_num1,_num2,_result Caculator2 *cal2 = [Caculator2 new]; int result2 = [cal2 add:12 andNum2:34]; NSLog(@"%d",result2); //第三种方法,类方法,不需要创建一个实例,节省内存空间 int result3 = [Caculator3 add:20 andNum2:40]; NSLog(@"%d",result3);1)节省内存空间;2)提高了效率;3)作为工具方法
4、+类方法的易犯错误
在类方法中不能使用类的成员变量,在实例方法中可以使用类的成员变量!
5、在+类方法中可以调用其他类似方法
1)可以直接使用本类类名(或者其他类名)调用类方法;
2)可以使用self。
6、对象方法中可以调用其他对象的方法
1)当前对象中创建对象(可以是当前类实例对象,也可以是其他类的实例对象),使用新创建的对象调用对象方法
2)可以使用self
3)对象作为方法的参数传递过来,可以使用传递过来的对象调用方法。
7、C语言里导入头文件的<>和“”有什么区别
""首先在当前目录下寻找,如果找不到,再到系统目录中寻找
<>直接去系统目录中找
8、 匿名类的使用
//[Car new];//实质上对象的存储空间
//匿名类(匿名对象)
//匿名类的第一种使用方法:
//1、使用匿名类访问实例变量(能,只能访问一次)
[Car new]->_speed = 300;
NSLog(@"_speed = %d",[Car new]->_speed);//输出为0,不是250
//2、使用匿名的类,可以调用方法
[[Car new] stop];
9、封装的步骤
定义设置实例变量setter方法和访问实例变量的getter的方法
setter方法(设置器):在开发过程中,考虑到安全性要求,一般不在成员变量名前面使用@public、@protected等关键字修饰,而是使用set方法来对象提供成员变量的值。在Set方法的内部可以看堆一些不合理的赋值进行筛选过滤。Set方法的作用:为外界提供一个设置成员变量值的方法。
10、对象之间的关系
组合关系、依赖关系、关联关系(一夫一妻,一个班级可以有很多个学生,一个学生可以学习多门课程,一个课程可以有多个学生)
11、Static关键字使用
在OC语言中,在变量声明前使用static,可以使局部变量保留多次调用一个方法所得的值,变量为静态变量,位于程序的全局数据区,若作全局变量,可将声明放在实现文件的开始部分。
不允许在实例变量前使用static,即实例变量不能声明为静态。
也不能修饰方法
4
- 黑马入门教程笔记02-OC
- 黑马入门教程笔记01-OC
- 黑马入门教程笔记03-OC
- 黑马入门教程笔记04-OC(完结)
- 黑马程序员--OC笔记
- 黑马程序员--OC学习笔记
- 黑马程序员--OC Bolck笔记
- 黑马程序员--OC笔记 类
- 黑马视频学习笔记-OC-继承
- 黑马视频学习笔记-OC-多态
- 黑马视频学习笔记-OC-property、synthesize
- 黑马视频学习笔记-OC-分类
- 黑马视频学习笔记-OC-SEL
- 黑马视频学习笔记-OC-protocol
- 黑马程序员-OC学习笔记-----方法
- 黑马程序员-OC学习笔记-----内存管理
- 黑马程序员-OC学习笔记-----协议、代理
- 黑马程序员-OC前言-学习笔记
- UNIX网络编程卷一:第三十章 客户/服务器程序设计范式
- gulp顺序执行任务
- CUDA BY EXAMPLES第4章代码错误解决方法
- 九度oj 1184
- MySQL优化的一点记录。
- 黑马入门教程笔记02-OC
- 数据结构学习之路-第二章:双向链表
- js控制限制输入数字,限制输入中文
- HDU 3584 Cube(三维BIT+容斥)
- java并发:Timer的缺陷 用ScheduledExecutorService替代 .
- NavigationItem.leftBarButtonItem 返回事件捕获
- 简单的表达式求值
- 15问答为专业测试人员揭开“精准测试”的面纱
- 常见错误之java.lang.IllegalStateException: The application’s PagerAdapter changed the adapter’s cont。。。