This Year

开发的点点滴滴,想到什么写什么。。


1.iOS9下适应HTTP连接:

比较无敌的做法是在info.plist加入如下xml代码

NSAppTransportSecurity

    
    NSAllowsArbitraryLoads
    
 

当然为了安全起见,我们可以只对特别的域名进行HTTP连接(如允许api.insecuredomain.com这个域名下的http连接)

NSAppTransportSecurity

  NSExceptionDomains
  
      api.insecuredomain.com
      

          
          NSExceptionAllowsInsecureHTTPLoads
          

          
          NSIncludesSubdomains
          
      
  

2.在适配iOS9的时候,遇到过ColletionView不能正确显示内容的情况

这个问题可以参考我在stackoverflow的回答。

3.自定义控件布局时机的问题

一般来说,假如是使用frame布局需要在layoutsubviews方法下布局,而使用Autolayout布局则需要在初始化的时候布局(如 initWithCoder or initWithFrame,这两个方法是取决于控件加载方式)。

4.如何给NavigationBarItems设置彼此之间的间距

let spacer = UIBarButtonItem(barButtonSystemItem: UIBarButtonSystemItem.FixedSpace, target: nil, action: nil)
spacer.width = 15
viewController.navigationItem.leftBarButtonItems = [backItem, spacer, logoItem]

5.Swift2.0 Singleton

public class ABC {
    public static let instance = ABC() //static修饰的变量会懒加载
    private init(){ }
}

6.iOS唯一标识

使用KeyChain

7.Swift initialize问题

当Swift的类是继承于OC类的时候,initialize方法是可以被重载的。如果是一个Swift的类则可以在init方法里使用disptach_once来确保部分代码仅运行一次。

8.Swift KVO

Swift内默认禁止动态派发,如果使用KVO,我们需要把Swift类的属性标记为dynamic。
[官方例子](Using Swift with Cocoa and Objective-C: KVO Observing)
如果是继承于OC的类则可以直接使用KVO。

9.单例模式 VS 静态方法

单例模式: 可以延迟加载,继承父类。
静态方法: 直接加载到内存。
一般来说,我还是用单例模式比较多。

10.测试后台给的API时候有什么好用的工具

Postman

11.使用AutoLayout做Cell的自适应高度布局

注意需要补全cell内的约束(上,下,左,右)都需要。
注意需要把tableview的高度设置为tableView.rowHeight = UITableViewAutomaticDimension
而且代理方法override func tableView(tableView: UITableView, estimatedHeightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat返回UITableViewAutomaticDimension.

12.AutoLayout中的“Content Compression Resistance”和“Content Hugging”

“Content Compression Resistance Priority”,也叫内容压缩阻力优先级(小名:别挤我),该优先级越高,则越晚轮到被压缩。
“Content Hugging Priority”,也叫内容紧靠优先级(小名:别扯我),该优先级越高,这越晚轮到被拉伸。
更详细,戳这里。

你可能感兴趣的:(This Year)