开发一个简单的swift 包-编程思维

swift 对于包包含了比较严格的访问控制,套路上与rust 比较类似,一般开发的项目都是自己项目的代码,以及引用别人开发 好的包,但是很多时候可能会有自己开发包共享别人的场景 简单包 可以直接使用swift 的cli 创建,或者手工 代码结构   ├── Package.swift └── Sources └── Platform └

swift中发布-订阅框架combine的使用-编程思维

Combine简介 Combine是一个苹果用来处理事件的新的响应式框架,支持iOS 13及以上版本。 你可以使用Combine去统一和简化在处理类似于target-action,delegate,kvo等事情的代码。 iOS目前已经有第三方的响应式框架了,如:RxSwift、ReactiveCocoa,但是苹果现在发布了自己的新的框架。 它提供了一种声明式、函数式的编程方式,可以让开发者更加简

swiftui的认识与使用-编程思维

  SwiftUI简介 SwiftUI是苹果推出的一个新的UI框架,它使用了声明的方式,通过视图,基础控件和布局控件来进行页面的开发。 SwiftUI具有跨平台性,一份SwiftUI代码可以同时跑在iOS、macOS、tvOS、watchOS平台上。 SwiftUI编写的页面代码更简洁,广泛使用链式调用。 SwiftUI视图和UIKit视图可以互相转换,对于将旧的项目过度到新布局方式比较友好。

swift函数调用方式浅析-编程思维

函数的调用机制   函数的调用机制是在函数调用时通过那种路径走到最终调用函数地址的机制。 在编程语言中,函数的调用机制有三种 1.静态调用:编译期就确定了函数内存地址,执行效率最高,还可以使用编译器优化如:inline函数内联提升执行效率。缺点:因为函数调用的内存地址在编译期已经确定,则无法支持继承等动态修改调用的方式。 2.函数表调用:每个类都有一份自己的v-table虚函数表,里面是以函数名

ios中的3种定时器-编程思维

在iOS中有3种常见的定时器,它们会根据不同的场景进行选择使用。 1.DispatchSourceTimer: 基于GCD实现。 2.CADisplayLink:基于屏幕刷新实现。 3.Timer:基于RunLoop实现。 DispatchSourceTimer定时器 DispatchSourceTimer定时器可以通过DispatchSource.makeTimerSource(queue:

ios 让部分viewcontroller支持屏幕旋转-编程思维

    首先,在Xcode里设置整个项目支持的屏幕显示方向:             然后创建一个UINavigationController的子类,然后重载以下属性: 对于需要自定义屏幕方向的ViewController,重载这个属性之后返回需要设定的屏幕方向参数即可。   在shouldAutorotate属性中判定哪个ViewController可以支持自动旋转; 在supported

ios nsuserdefaults [setvalue:forkey:] [setobject:forkey:] setvalue(_,forkey:) set(_,forkey) -编程思维

        前者其实是NSObject都可以调用的KVC方法,后者才是NSUserDefaults的实例方法; 这里参数的类型是nullable id,但是我建议你在传null的时候慎重考虑,否则你的应用就可能面临闪退! 个人认为,任何高级语言里面使用null作为参数传递的时候,都应该万分小心!       前者其实是NSObject都可以调用的KVC方法,后者才是UserDefault

swift typealias associatedtype-编程思维

   使用typealias为常用数据类型起一个别名, 一方面更容易通过别名理解该类型的用途, 另一方面还可以减少日常开发的代码量。     typealias使用实例: // 网络请求常用回调闭包 typealias SuccessWithMsg = ((_ msg:String) -> Void) typealias FailWithError = ((Error) -> Vo