iOS 开发常见问题整理 (持续更新)
-
sdwebimage 无法下载图片 报
403
错误 检查请求头是否加入user-agent
,如下:
NSString * userAgent = [NSString stringWithFormat:@"%@/%@ (%@; iOS %@; Scale/%0.2f)",
[[[NSBundle mainBundle] infoDictionary] objectForKey:(__bridge NSString *)kCFBundleExecutableKey] ?: [[[NSBundle mainBundle] infoDictionary] objectForKey:(__bridge NSString *)kCFBundleIdentifierKey],
[[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleShortVersionString"] ?: [[[NSBundle mainBundle] infoDictionary] objectForKey:(__bridge NSString *)kCFBundleVersionKey],
[[UIDevice currentDevice] model], [[UIDevice currentDevice] systemVersion],
[[UIScreen mainScreen] scale]];
[[SDWebImageDownloader sharedDownloader] setValue:userAgent forHTTPHeaderField:@"User-Agent"];
由github 获得知识
-
iOS 8下 当
viewcontroller
下有一个scrollview
并设置代理为当前viewcontroller
滑动过程中退出当前页面时会有崩溃现象,解决方式为viewcontroller dealloc
时 设置scrollview
的delegate
为nil -
直接设置contentOffset属性与 使用contentOffset:animated:的区别
如果animated这一参数设置为NO,或者直接设置contentOffset这个property,delegate会收到一个
scrollViewDidScroll:
消息。如果animated这一参数设置为YES,则在整个动画过程中,delegate会收到一系列的scrollViewDidScroll:
消息,并且当动画完成时,还会收到一个scrollViewDidEndScrollingAnimation:
消息。 -
swift 弱引用
weak字符串修饰的即为弱引用对象,并不会引起引用计数增加,当对象被释放(回收)之后,weak修饰的变量将指向nil,weak引用是一种非常安全的引用方式。ps:weak修饰的类型一定是个可选值类型unowned字符串修饰的也为弱引用对象,但是与weak不同的是,unowned不允许设置为可选值类型,也不允许有nil值的情况。之前的Swift版本,unowned修饰的对象可以正常书写,只有在运行时才会崩溃报错,在3.0版本编译器会检测其修饰的对象是否为nil。
-
hash 与 isEqual
当一个实例作为NSDictionary的key时、作为NSSet的一个元素时,会调用hash方法
为了优化判等的效率, 基于hash的NSSet和NSDictionary在判断成员是否相等时, 会这样做
- Step 1: 集成成员的hash值是否和目标hash值相等, 如果相同进入Step 2, 如果不等, 直接判断不相等
- Step 2: hash值相同(即Step 1)的情况下, 再进行对象判等, 作为判等的结果
简单地说就是
hash值是对象判等的必要非充分条件