近期粗陋笔记

一、回滚

遇到这样的问题:

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.csdn.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.csdn.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语句,那么就跳转到表达式处进行下一次的循环判断,这一点前面已经验证过了。

猜你喜欢

转载自blog.csdn.net/u014544346/article/details/81943917