诗与远方

Be your personal best


  • 首页

  • 标签

  • 分类

  • 归档

iOS cookie track

发表于 2021-08-12 | 分类于 iOS |

接入第三方需要进行cookie 的追踪和存储逻辑。可选择SF进行处理。

WKWebView cookie can’t be used.

1、 iOS SFSafari Third-party cookie

stackoverflow

Apple

GitHub

iOS

内部

UIWebView

``

WKWebView

info.plist
NSCrossWebsiteTrackingUsageDescription : Allow track

外部Linking

DeepLink scheme

iOS 9.0 以上支持 《SafariServices》FrameWork

ITP( Intelligent Tracking Prevention ) model dialog

ITP

引导说明

Settings.bundle

can add some srtting item in custom define for something you can show like appversion etc.

iOS 14.0 广告隐私

ATTrackingManager 追踪

2020 书单

发表于 2021-02-22 | 分类于 读书 |

2020 完成书单

  • 《成就》
  • 《幸福领导力》
  • 《你当像鸟飞往你的山》
  • 《聚.裂》

  • 《哲学家们都干了些什么》

  • 《禅与摩托车维修艺术》

  • 《善战者说》– 孙子兵法与取胜法则十二讲

Swift & OC

发表于 2020-06-27 | 分类于 Swift |

混编配置

Swift访问OC: 只需要在桥接文件 ProductName-Bridging-Header.h 中导入需要暴露给Swift的OC类,即可在Swift中访问相应OC类及方法。

创建swift 文件时候,xcode 会提示创建 桥接文件。 xxx-Bridging-Header.h

OC访问Swift: 在OC类中导入 ProductName-Swift.h 文件(Target名称不同,对应文件名称也不同,工程配置中能看到),即可访问Swift中暴露给OC的属性和方法。

build 会系统生成供oc调用的 .h,包含类及 public 接口属性。

OC-Swift Demo

Carthage

brew update
brew install carthage

安装

还是以Mac库管理 homebrew
brew upgrade carthage

终端 cd  到项目下创建文件:   touch Cartfile

    github "Alamofire/Alamofire" ~> 5.0
    github "SwiftyJSON/SwiftyJSON”

升级-第三方库

carthage update --platform iOS

完成后在项目文件夹下会生成 Carthage文件夹。

Xcode 配置

  • General中 导入build的库, /Carthage/build/iOS/xxx.framework
  • build Phases
    新增一个 “+” new run script phase

    Shell 下方文本区域输入:  /usr/local/bin/carthage copy-frameworks
    Input Files:
    $(SRCROOT)/Carthage/Build/iOS/Alamofire.framework
    

Sourcetree git 如何忽略 carthage build文件

# Add this line if you want to avoid checking in source code from Carthage dependencies.

OCSwift/Carthage/Checkouts
OCSwift/Carthage/Build

还是觉得 cocoapods 省事,因为Carthage 下载完之后还是要配置.
cocoapods 集成度更高,也更省心。而有些人喜欢手动配置这些第三方库,这样 workspace 会更干净,那么使用 Carthage 就会很方便。

Swift 基础

发表于 2020-06-26 | 分类于 Swift |

基础类型安全

Int、double 、Float 、Bool、 Array 、Set 、Dictionary

!、 ? 、guard

类型注解( ype annotation )

    var  str : String   // 可根据声明赋值判断,也可以根据类型注解

一个十进制数,没有前缀
一个二进制数,前缀是 0b
一个八进制数,前缀是 0o
一个十六进制数,前缀是 0x

Int8  -128 ~ 127 ;  UInt8   0~255 

类型别名 ( typealias )

 typealias myColor = UIColor
var color = myColor.red

元组(Tuple) 返回多个值
元组是把多个值组合成一个复合值。元组内的值可以是任意类型,并不要求是相同类型。

网络请求函数返回值 (Int, String) 元组来描述是否获取成功.

最适合函数返回值、值传递多个参数的情况,复杂的结构可以使用 Struct 、Class

可选类型( Optional )
泛指所有对象(类) >=oc 的 NSNotFound

 //convertedNumber 被推测为类型 "Int?", 或者类型 "optional Int"
 let possibleNumber  = "123"
let convertedNumber = Int(possibleNumber) 


var parameter: String?   //默认值为 nil

Swift 的 nil 和 Objective-C 中的 nil 并不一样。在 Objective-C 中,nil 是一个指向不存在对象的指针。在 Swift 中,nil 不是指针——它是一个确定的值,用来表示值缺失。任何类型的可选状态都可以被设置为 nil,不只是对象类型。

异常处理

do {
    try shouldDoSomething()
} catch {
     <!---->
} 

断言和先决条件

assert(_:_:file:line:)

precondition(_:_:file:line:) 

枚举

值类型

enum SomeEnumeration {
// 枚举定义放在这里
}

//MARK   :CaseIterable
    SomeEnumeration.allCases.count

关联值

//元组
enum Point {
    case location(Int,Int)      //x,y
    case space(Int,Int,Int)     //x,y,z
}

 var currentPoint = Point.location(10, 20)
      currentPoint = .space(10, 20, 30)  //覆盖location

原始值
原始值类型相同,且内容不重复

Int 类型隐式赋值同 OC NS_Enum(){}, String 隐式为 字符串名称

使用枚举成员的 rawValue 属性可以访问该枚举成员的原始值:
->   Direct.north.rawValue
var  initD = Direct(rawValue: <#T##Int#>)

结构体

值类型
struct Person {
var age = 20
var name = “jack”
}

类

引用类型(同 指针)

恒等运算符 === 和 !== 判断两个变量或者常量是否引用了同一个类的实例。

区别

struct class 备注
值类型 引用类型
深拷贝 copy 副本 指针传递 class存储在堆中
copy on write 引用计数
函数编程 面向对象
不能继承 single 单继承
初始化 不需要实现 init :var 需要自己实现带参数的初始化接口
mutable 需要明确说明 一直是 mutable
多数都是struct(除去 协议、view ) viewModel 在MVVM中是 class-based (需要被共享->指针类型)

generics 泛型

//Element 泛型 T
struct Array<Element> {

    func append(_ element: Element ) {

    }
}

functions

也是一种类型、   (Int,Int)-> Bool 

Closures

闭包    ==  内联函数

参考

Swiftgg-gitbook

SwiftUI 初识

发表于 2020-06-21 | 分类于 Swift |

swiftUI

大前端风向目前一直很强劲,目前Google 的 Flutter 可谓是风头正盛。而 苹果呢,也在去年展示了自家的跨自家平台框架 SwiftUI.

开始一波新的征程, 脱离 《UIKit》 的这套框架,重新定义了新的方式和类型、

语言&语法

swift 和 Dart 都作为两个平台的新生代语言。 swift 也打破了苹果的封闭原则,采用开源的方式使其得到了快速的发展。

SwiftUI 用数据绑定和状态管理替代了原有的复杂控制逻辑,而 DSL 又使得代码在结构上和 UI 的层级结构高度一致。

一直以来我们都 面向对象编程 OOP 的封装、集成。它是一种控制流,命令式的方式。
swift 以 函数式编程 functional programming 更像是一种 声明式语法 和 面向协议编程 POP .

这语法糖真的是太甜了: 不需要 ; 、 缺省参数、 内联闭包 、 最后一个参数是{}, 则可以放到整个属性外面, 如果没有参数(),则可以省略()

struct ContentView: View {

        @State var name:String = "osborn" 
     let results = [Result(score: 8), Result(score: 5), Result(score: 10)]

     var body: some View {

     HStack {
        ForEach( results ) { (result) in
            Text("Result: \(result.score)")
        }
     }

    .padding()
    .foregroundColor(Color.orange)
    .font(Font.largeTitle)
}

}

View

UIControl

类型

  • struct
  • class
  • Protocol
  • generics
  • enum
  • functions

参考

喵神 – 面向协议编程与 Cocoa 的邂逅

123
osborn

osborn

iOS Developer,Bboy

15 日志
7 分类
11 标签
RSS
GitHub 简书
© 2021 osborn
本站访客数: