今天是4月8日,接下来22天搞定ios,赶紧弄spring去
简单回顾一下demo1的目录结构:
1.各种第三方库文件:
Getui,MJRefresh第三方下拉刷新库,圆形进度条,gif,圆形转圈圈,类似android的ImageLoader,图片上传,阿里百川,Umeng
然后就是iosapp主文件夹
最后就是编译文件products
iosapp详细剖一下:
1.首先就是
.entitlements,这个跟icloud和推送,sandbox有关,暂时不管
goods.sqlite 这个应该跟使用的第三方数据库有关系,用于收藏夹
2.宏:
1. 常量 #define +
大写 对象宏,就是android里面final 类型常量
2.boolean 作为一个判断条件 比如:
#define WIDTH_320 (CGRectGetWidth([[UIScreen mainScreen] bounds])==320)
3.嵌套宏 #define x (4 + y)
#define y (2 * x)
4.宏方法
5.本demo的宏
#define 后面➕ 大写类似 final constant var
#ifndef Constant_h
#define Constant_h
如果已经导入了这个.h文件,那么久不导入,常见的宏
#endif
关于宏,不需要了解太多,常用的宏也没几个,重点放在后续代码中
quote:http://gcc.gnu.org/onlinedocs/cpp/Macros.html
3.关于oc的若干语法
关于常见的什么NSString 等oc语法,开始肯定不熟悉的,所以,在备忘录积累一下,
然后,这里option其实就是参数的说明,oc的语法跟Java比,参数多个说明,可读性好一点,有无必要见仁见智
NSString建议用copy,对象用strong
oc里面的self就是Java里面的this,就是指的本类的一个对象,之前在Java不是很清楚的this,static其实很好理解,这个在spring学习中的的synchronized 锁里面有说明。
Oc的几种回调方式,quote https://blog.csdn.net/ZXC641483573/article/details/80909063
- Target-action回调
- delegate方式
- Notifications 方式
- block方式
在本demo中,调服务端接口使用的就是匿名block的方式,关于block的深入学习,我们放到后面,暂时先了解一下知道如何使用即可
4.Rescources
Res文件里面放了本地的一些图片,h5文件
还有一个xib,之前学到xib就是android里面的xml的单元类型的
5.Main.storyboard
本demo中,所有的view,全部放在这里,但是我觉得不应该这样,view太多,会看的没有层次感,关系不清楚
然后,在ios里面,每一个scene都由一个controller来控制,所以我们主要的精力放在学习controller上面,在本demo中,不一一的写每个controller,而是把每天关于controller的技术总结放到blog里面,具体的我写在本地备忘录
6.Controller汇总
6.1
首先来看一个最基本简单的点击事件
UITapGestureRecognizer *singleTap1 = [[UITapGestureRecognizer alloc]
initWithTarget:self action:@selector(onClickIKnow:)];
[self.view addGestureRecognizer:singleTap1];
把一个ios的一个监听,绑在一个view上,然后发生了触摸事件以后,调用某个方法,这个方法的selector也写进来了,很容易看懂
这里补充一下监听的触发事件的一个类sender
触发事件这样写(id)sender
当发生click触发的时候就写成这样
(UIGestureRecognizer*)sender
而加入view里面有一个UIButton的时候,就写成:(UIButton *)sender
很好理解
6.2
didReceiveMemoryWarning
在ios里面,苹果给每个app只有20M的内存
一旦用到20m,就会给你一个通知,这个通知就是这个方法
在每个控制器都有,怎么处理看你自己
6.3
在本demo1里面阿,他是这样的,把主要的view全部画在storyboard里面,然后controller里面写代码+view
demo2里面很有可能是,不画,全部写在controller里面,也不是不可以
6.4
这里说一下,不同的controller之前的跳转,有很多方式,但是在这个demo里面
用的是,在storyboard里面拖拽,然后Storyboard Segue里面有一个Identifier ID
我们用这个id,使用方法performSegueWithIdentifier实现跳转,并且传数据
6.5
这里提一下,有点类似java里面,在ios中,.h文件里面,供其他类使用的fun,你才expose出来
否则没必要