#pragma mark - Day03_01_对象作为方法的返回值
1.OC方法可以有返回值
- (类名 *)方法名;
2.
对象作为方法的返回值本质:把存有堆区对象地址的指针变量作为方法的返回值
对象作为方法的参数本质:把存有堆区对象地址的指针变量作为方法的参数
#pragma mark - Day03_02_类的属性和方法
1.类的属性
a)这类事物所具有的共同特征
b)这个类拥有东西
2.类的方法
a)这类事物所具有的共同行为
b)这个类具有的功能
#pragma mark - Day03_03_对象作为类的属性(较难)
1.OC对象是可以作为类的成员变量
2.类的成员变量本质上就是一个变量,指向A类的指针变量作为B类的成员变量
3.当我们根据B类创建一个B类对象之后,其中的A类型的成员变量是没有值的,初始值是nil
4.两个类之间的关系
A类 B类,如果在A类有一个B类型的成员变量,说明A拥有B,这是一种 关联 关系,说明A关联B
类之间的关系:组合 继承...
5.
#pragma mark - Day03_04_玩家类的设计
面向对象开发的时候,一个很重的思想,就是去找类,去设计类
0.面相对向开发的基本流程
a)根据已知的业务流程,分析需要定义哪些类
b)分析这些类中应该拥有的内容和功能,转化为类的成员变量和方法
1.枚举类型定义的位置
a)如果只有当前类使用,可以定义在当前类的头文件中
b)如果多个类都需要使用,需要定义在一个单独的头文件中,然后在需要用到该枚举类型的类中引用即可.
2.如果在类的一个方法中调用当前类的另外一个方法,需要使用self关键字
a)如果self存在于对象方法中,指代的是调用该方法的对象
b)如果self存在于类方法中,指代的是调用该方法的类
c)也就是说,通过谁调用方法,这个方法中的self就指代谁
#pragma mark - Day03_05_机器人类的设计
#pragma mark - Day03_06_猜拳游戏结束
敲3遍
第1遍,参考老师的代码,学习模仿,理解思路
第2遍,以自己写为主,有问题的地方,再去参考老师代码
第3遍,完全自己敲,根据自己的思路来写,不要参考任何资料
量变引起质变的过程
编程最忌讳的:眼高手低
从基础班开始,就养成多敲多练多思考的习惯
就业班的学习方式也是一样一样的.
#pragma mark - Day03_07_如何取到当前对象的属性
1.可以使用当前类的对象,作为当前类中方法的参数
2.可以使用当前类的对象,作为当前类的成员变量
#pragma mark - Day03_08_异常处理(了解)
1.错误:程序代码无法编译通过
2.bug:程序能够运行,但是执行结果和预期不一致
3.异常:程序能够运行,但是在某些特殊的场景下,会崩溃
4.处理异常:@try...@catch...@finally
@try {
// 可能会出现异常的代码
} @catch(NSException *ex) {
// 处理异常的代码
} @finally {
// 无论是否发生异常都会执行的代码
}
5.OC中的异常处理机制,不是非常完善.所以开发中很少用到.在Java或者C#中,异常处理使用的非常频繁.
6.在iOS开发中,一般都是通过逻辑判断,减少异常的发生
7.简单了解即可.
#pragma mark - Day03_09_类方法的基本使用
1.类方法
1.声明
类方法的声明必须要以 + 号开头
2.调用
类方法只能使用类名调用
[类名 类方法名];
2.对象方法
1.声明
对象方法的声明必须要以 - 号开头
2.调用
对象方法只能使用对象名调用
[对象名 对象方法名]
3.类方法的特点
1.节约空间
2.提高效率
4.类方法的局限性
1.在类方法中无法直接访问当前类的成员变量
2.在类方法中无法使用self关键字直接调用当前类的对象方法
5.工具类
1.如果不需要在方法中访问当前类的属性
2.如果不需要再方法中调用当前类的对象方法
可以使用类方法
#pragma mark - Day03_10_使用类方法需要注意的问题
1.类方法之间是不能重名的
2.对象方法之间是不能重名的
3.类方法和对象非是可以重名的,使用类调用的是类方法,使用对象调用的是对象方法
4.虽然在类方法中无法直接访问当前类的成员变量,但是可以创建一个对象,访问该对象的成员变量
5.在类方法中无法使用self关键字直接调用当前类的对象方法,但是可以创建一个对象,调用该对象的对象方法
#pragma mark - Day03_11_类方法的规范
1.在OC中定义一个类的时候,需要定义一个和类名同名的类方法,用来返回一个纯洁的该类的对象
+ (类名 *)类名 {
// 创建一个该类的对象,并返回
}
2.如果想返回一个指定成员变量值对象,需要在类方法中添加参数
+ (类名 *)类名With成员变量名:(成员变量类型)形参名 {
// 创建一个该类的对象
// 根据外界传入的参数,设置该对象的成员变量的值
// 返回该对象
}
#pragma mark - Day03_12_new其实是1个类方法
1.new本质上来说是一个类方法
2.new的作用:
1.在堆区开辟空间创建一个对象
2.给对象进行初始化,(给对象中的成员变量赋初始值\默认值)
3.
#pragma mark - Day03_13_NSString的本质是1个类
1.NSString本质上就是一个数据类型
可以使用以下方式进行创建
NSString *str = [NSString new];
NSString *str1 = [NSString string];
2.简写的方法
NSString *str = @"xxx";
3.打印的时候
%p, 打印的是对象的地址
%@, 打印的是对象的内容
4.如果使用以下方式创建NSString类型的对象
NSString *str = [NSString new];
NSString *str1 = [NSString string];
NSString *str2 = @"";
创建出来的是空字符串@"",也就是说字符串的内容是空的
并不代表str = nil;
#pragma mark - Day03_14_NSString的常用方法
// 把一个C语言字符串转换成OC字符串NSString;
// + (nullable instancetype)stringWithUTF8String:(const char *)nullTerminatedCString;
// 根据指定的格式,拼接字符串,生成一个新的字符串
// + (instancetype)stringWithFormat:(NSString *)format, ... NS_FORMAT_FUNCTION(1,2);
// 返回当前NSString对象的长度
// - (NSUInteger)length;
// 根据index索引获得字符串中的指定字符
// 注意点:返回值是unichar类型,需要使用%C占位符进行输出
// - (unichar)characterAtIndex:(NSUInteger)index;
// 比较传入的字符串和当前字符串的大小
// 比较的规则:从字符串开头开始取出字符,当两个字符串的字符不相同时,比较两个字符的ASCII值,ASCII值大的字符串就大
// 返回值类型是一个枚举
// NSOrderedAscending : 升序,当前字符串比传入的字符串小.
// NSOrderedSame: 一样
// NSOrderedDescending : 降序当前字符串比传入的字符串大
// - (NSComparisonResult)compare:(NSString *)string;
// 判断两个字符串的内容是否相同
// - (BOOL)isEqualToString:(NSString *)aString;
NSString *str = @"aaa";
NSString *str1 = @"bbb";
if (str == str1)
判断的是str和str1这两个指针变量中存储的值是否相同,其实就是比较地址是否相同,而不是比较字符串的内容
OC加强阶段,Fondation框架
今日任务:
1.把猜拳游戏掌握熟练
2.字符串练习
1. 使用三种方式创建一个'值为空'的字符串(!nil)
2. 使用两种方式创一个值为'xiaoming'的字符串
3. 打印 @"123456778900987654321"的长度
4. 把这三个字符串(@"123" @"cvb" @"你好,世界!")拼接到一起,并打印
5. 比较 @"abc" 和 @"abd" 的大小
6. 判断 @"abcdefg" 和 @"abCdefg" 存的值是否相等
7. 获取 @"我英文不好a" 第5个字符的值
3.设计题
1) 设计类
狗类
属性: 名字,年龄
对象方法:
叫几声
类方法:
1.快速创建类方法
2.快速创建类,并设置属性方法.
车类
属性: 品牌,公里数
对象方法:
给车一个速度,车开动,并且公里数增加
类方法:
1.快速创建类方法
2.快速创建类,并设置属性方法.
人类
属性: 姓名,年龄,狗,父亲
对象方法:
1.给他一辆车,让车跑
2.遛狗
类方法:
1.快速创建类方法
2.快速创建类,并设置属性方法(除去'父亲').
3.给他两个人对象(儿子,父亲),判断这两个人对象是不是父子关系
需求:
1. 用普通方式创建一条狗对象(d1),并设置d1的属性
2. 用普通方式创建一个人的对象(p1),并且设置属性,把d1赋值给p1的狗属性,然后遛狗
3. 用类方法创建一个车对象(car),然后让p1开车
4. 用类方法创建一个人对象(p2),并把p2赋值给p1的父亲
5. 用类方法创建一个狗,并设置属性,赋值给p2,然后通过p1打印出这条狗的名字
6. 调用人类的类方法,判断 p2 是不是 p1 的父亲
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) | 黑马程序员IT技术论坛 X3.2 |