“公钥” 和 “私钥”
首先要明白两个概念“公钥”和“私钥”,
“公钥” 可以理解成锁头,“私钥” 就是钥匙。我们可以把 “公钥” 给客户端用来加密数据,当数据传回来时再用私钥解开加密就可以看到真正的内容了。
https数字证书:里面包含公钥,一般签发证书时会得到一个与公钥配对的私钥。证书会在通信过程中传给客户端,客户端也可以放一个,用来对比和服务端传过来的是不是一致
对于NSArray
和NSDictionary
我们可以通过下标直接访问对象,比如
1 | NSArray *arr = @[@"a", @"b", @"c"]; |
其实对于普通NSObject类,我们通过实现一些方法也可以实现类似功能
1 | //实现类似数组下标索引只需实现以下方法 |
1 | - (NSArray *)tasksForKeyPath:(NSString *)keyPath { |
我们先来看两个版本代码
不使用@property版本
1 | @interface User : NSObject |
GCD 和 NSOperation都是iOS多线程技术,在现在的实现中NSOperation还是基于GCD的封装。GCD是C-based API
,把一个任务单元封装在一个block中,可以在c、c++中使用;NSOperation是Cocoa提供的,是一个objective-c抽象类,使用时你要继承它或直接使用系统提供的NSInvocationOperation
和NSBlockOperation
类。
接下来我会分别对GCD和NSOperation进行介绍:
从网上看了iOS APP启动流程,这里简单记录下。
1.执行main()函数。
2.main()函数调用UIApplicationMain()
3.UIApplicationMain()创建UIApplication对象、UIApplicationDelegate对象,读取info.plist配置文件,设置程序启动的一些属性,创建Main RunLoop,用户与app所有交互都被一个一个传到Main RunLoop进行处理。
4.如果是通过Storyboard或xib启动app,则开始加载UI
只有继承UIResponder的对象才能处理触摸事件,比如:
- UIApplication
UIResponder提供了以下方法处理触摸事件
1 | - (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event; |
我们可以重写这些方法来处理触摸事件
How to get cell in heightForRowAtIndexPath?
It’s impossible, because when -heightForRowAtIndexPath
is called, no cells are created yet. You need to understand how the UITableView
works:
UITableView asks it’s datasource how many sections it will have
1 | -numberOfSectionsInTableView |
At this point there are no cells created.