1). wkwebview中的iframe中发现iframe的cookie丢失,测试发现
- 钉钉app中打开不会丢失 ✅
- 微信中打开会丢失 ❎
- safari中同样丢失 ❎, 但设置中开启允许跨域追踪后,发现不会丢失 ✅
- iOS13上设置HTTPCookieStorage.shared.cookieAcceptPolicy = .always发现不丢失?

2). lazy var deinit 造成程序奔溃
- 例如deinit中调用未初始化的webview,webview设置已经销毁的controller为代理,可能造成野指针问题
- 可以添加标识,来表示懒加载的变量是否加载。(思考:是否有更优雅的方式)

3). 支付宝支付 AlipaySDK.defaultService()?.payOrder(..., fromScheme: .., callback: {}中callback的回调,根据文档。 callback只在未安装支付宝app时进行回调。如果安装支付宝,则需要在func application(_ app: UIApplication, open url: URL, options: [UIApplication.OpenURLOptionsKey : Any] = [:]) -> Bool方法或者scen方法中进行处理(iOS9),可notification通知其他页面刷新。

4). block形式通知(Notification)的是否需要deinit中销毁。建议销毁

private var observer: Any?
self.observer = NotificationCenter.default.addObserver(forName: Notification.Name(rawValue: AppNotificationName.alipaySuccess.rawValue), object: nil, queue: OperationQueue.main) { (noti) in
        
}
//remove 
NotificationCenter.default.removeObserver(observer)

5). 使用runtime绑定NSNumber类型的变量,如果用OBJC_ASSOCIATION_RETAIN,32bit的设备会崩溃/-[CFNumber retain]: message sent to deallocated instance 0x16dc3350。 需要使用OBJC_ASSOCIATION_RETAIN,详情见运行时绑定NSNumber类型传参Crash

static const void *k_pop_tag = &k_pop_tag;

-(void)setJk_popTag:(NSInteger)popTag{
    NSNumber *number = [[NSNumber alloc]initWithInteger:popTag];
    //objc_setAssociatedObject(self, k_pop_tag, number, OBJC_ASSOCIATION_ASSIGN);
    objc_setAssociatedObject(self, k_pop_tag, number, OBJC_ASSOCIATION_RETAIN);
}
//get
-(NSInteger)jk_popTag{
    //-[CFNumber retain]: message sent to deallocated instance 0x16dc3350
    id  o = objc_getAssociatedObject(self, k_pop_tag);
    if (o) {
        return [o integerValue];
    }
    return 0;
}

6). 某个view的frame转换到相对window的frame

 let tgFrame = cell.convert(cell.bounds, to: nil)