近期粗陋笔记
一、回滚
遇到这样的问题:
1、解决方法 选择Read From Disk
2、将xcode退出,重新打开
二、目录
参考链接:
http://www.cnblogs.com/iihe602/archive/2013/01/17/2865280.html
https://www.jianshu.com/p/34cda6a121db
http://blog.****.net/fanjunxi1990/article/details/9352917
1、如果weexjsFile是一个groups
NSString *steeer = [[NSBundle mainBundle] pathForResource:@"registerOrderPay" ofType:@"js"];
这个是有的
并且是:
/var/containers/Bundle/Application/65FAA2B6-8808-4358-B1C6-EA79A161F467/SecooDistributionSeller.app/registerOrderPay.js
2、但如果这是一个文件
NSString *steeer = [[NSBundle mainBundle] pathForResource:@"registerOrderPay" ofType:@"js"];
这个就没有
3、[NSBundle mainBundle] bundlePath]是
/var/containers/Bundle/Application/65FAA2B6-8808-4358-B1C6-EA79A161F467/SecooDistributionSeller.app
4、猜想
只要是group
所有文件都是[NSBundle mainBundle] bundlePath]的子目录,这个猜想是对的。
5、+ (nullable NSString *)pathForResource:(nullable NSString *)name ofType:(nullable NSString *)ext inDirectory:(NSString *)bundlePath;
这个接口干嘛用的
这个接口是指定路径,在指定路径里面寻找你要想找的文件。
6、沙箱的作用是隔离应用程序,每个应用程序只能操作自己的沙箱中的东西
// 应用程序的bundle相当于是一个只读的沙箱环境
7、所有的非代码文件都要保存在此,例如属性文件plist、文本文件、图像、图标、媒体资源等。沙盒是用来存入缓冲区的,APP关掉,缓存被自动清理。
8、归档文件也是写入沙盒里面
9、可以断定group是平行拷贝,文件夹是树形拷贝
10、NSArray *arr = [NSBundle allBundles];
11、还要导入方式只能用fonder形式,而不能用grounps形式
fonder是原始文件,而groups是虚拟文件
三、列表优化建议
1、然后列表所有数据都是提前计算好
2、再渲染
3、渲染用的是异步渲染
4、yylabel
5、也改了一些东西
6、你把列表用的所有数据都提前算好,放到一个model里面去
7、然后渲染的时候label用yylabel渲染
8、不是 后台给后台的
9、我们客户端自己计算好所有要用的数据
10、列表里面显示只需要拿到数据赋值就行
11、不需要做任何的初始化东西
12、cell里面不要带数据的任何计算
13、就是赋值
14、列表那个代理所需要的数据数组装的是model
15、这个model就是里面数据提前算好再放数组
16、然后视图层次减少一些
17、cell里面自定义的子视图不要太多
18、label的话
19、用yylabel
四,字符串
1、-(BOOL)hasPrefix:(NSString *)// astring ;检查字符串是否以astring开头
2、-(BOOL)hasSuffix:(NSString *) // astring;检查字符串是否以astring结尾
3、 capitalizedString:将字符串的首字母大写
五、pod install 和update的区别
文章完全参考:
https://www.jianshu.com/p/a977c0a03bf4
作者:hhhxy
作者写的很棒
简单来说
1、使用pod install 来安装新的库,即使你的工程里面已经有了Podfile,并且已经执行过pod install 命了;所以即使你是添加或移除库,都应该使用pod install。
2、使用pod update [PODNAME]只有在你需要更新库到更新的版本时候用。
3、Pod install:这个是第一次在工程里面使用pods的时候使用,并且,也是每次你编辑你的Podfile(添加、移除、更新)的时候使用。每次运行pod install命令的时候,在下载、安装新的库的同时,也会把你安装的每个库的版本都写在了Podfile.lock文件里面。这个文件记录你每个安装库的版本号,并且锁定了这些版本。当你使用pod install 它只解决了pods里面,但不在Podfile.lock文件里面的那些库之间的依赖。对于在Podfile.lock里面所列出的那些库,会下载在Podfile.lock里面明确的版本,并不会去检查是否该库有新的版本。对于还不在Podfile.lock里面的库,会找到Podfile里面描述对应版本(例如:pod "MyPod", "~>1.2")。
4、pod outdated:
当你运行pod outdated命令,Cocoapods会列出那些所有较Podfile.lock里面有新版本的库(那些当前被安装的库的版本)。这个意思就是,如果你运行pod update PODNAME,如果这个库有新的版本,并且新版本仍然符合在Podfile里的限制,它就会被更新。
5、pod update:
当你运行 pod update PODNAME 命令时,CocoaPods会帮你更新到这个库的新版本,而不需要考虑Podfile.lock里面的限制,它会更新到这个库尽可能的新版本,只要符合Podfile里面的版本限制。如果你运行pod update,后面没有跟库的名字,CocoaPods就会更新每一个Podfile里面的库到尽可能的最新版本。
6、正确做法
你应该使用pod update PODNAME去只更新某个特定的库(检查是否有新版本,并尽可能更新到新的版本)。对应的,你应该使用pod install,这个命令不会更新那些已经安装了的库。
当你在你的Podfile里面添加了一个库的时候,你应该使用pod install,而不是pod update,这样既安装了这个库,也不需要去更新其它的已安装库。
你应该使用pod update去更新某个特定的库,或者所有的库(在Podfile的限制中)。
7、提交你的Podfile.lock文件:
在此提醒,即使你一向以来,不commit你的Pods文件夹到远程仓库,你也应该commit并push到远程仓库中。
要不然,就会破坏整个逻辑,没有了Podfile.lock限制你的Pods中的库的版本。
六,tcp/ip
1、这两个端口最大的区别就在于服务不同。
端口:80
服务:HTTP
说明:用于网页浏览。木马Executor开放此端口
端口:443
服务:Https
说明:网页浏览端口,能提供加密和通过安全端口传输的另一种HTTP
HTTPS(Secure Hypertext Transfer Protocol)安全超文本传输协议 它是一个安全通信通道,它基于HTTP开发,用于在客户计算机和服务器之间交换信息。它使用安全套接字层(SSL)进行信息交换,简单来说它是HTTP的安全版。
HTTPS和HTTP的区别:
https协议需要到ca申请证书,一般免费证书很少,需要交费。
http是超文本传输协议,信息是明文传输,https 则是具有安全性的ssl加密传输协议
http和https使用的是完全不同的连接方式用的端口也不一样,前者是80,后者是443。
http的连接很简单,是无状态的 HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议 要比http协议安全
2、192.168.1.1是路由器主机地址
一般用户名是admin
七、循环结构中break、continue、return和exit的区别
参考链接:https://blog.****.net/hunanchenxingyu/article/details/8101795
1.break语句的使用场合主要是switch语句和循环结构。在循环结构中使用break语句,如果执行了break语句,那么就退出循环,接着执行循环结构下面的第一条语句。如果在多重嵌套循环中使用break语句,当执行break语句的时候,退出的是它所在的循环结构,对外层循环没有任何影响。如果循环结构里有switch语句,并且在switch语句中使用了break语句,当执行switch语句中的break语句时,仅退出switch语句,不会退出外面的循环结构。通过图3-17,读者可以很直观地了解break语句的使用。
2. continue
continue语句是这5种结束循环的方式中最特殊的,因为它并没有真的退出循环,而是只结束本次循环体的执行,所以在使用continue的时候要注意这一点。图3-18为各种循环结构中continue语句的使用。在for循环中,首先执行表达式1(注意表达式1在整个循环中仅执行一次),接着执行表达式2,如果满足条件,那么执行循环体,如果在循环体中执行了continue语句,那么就跳转到表达式3处执行,接下进行下一次循环,执行表达式2,看是否满足条件;在while循环中,如果执行了continue语句,那么就直接跳转到表达式处,开始下一次的循环判断;在do while循环体中如果执行了continue语句,那么就跳转到表达式处进行下一次的循环判断,这一点前面已经验证过了。