#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 的父亲
|