一、 SDWebImage原理
一个为UIImageView提供一个分类来支持远程服务器图片加载的库。
功能简介:
1、一个添加了web图片加载和缓存管理的UIImageView分类
2、一个异步图片下载器
3、一个异步的内存加磁盘综合存储图片并且自动处理过期图片
4、支持动态gif图
5、支持webP格式的图片
6、后台图片解压处理
7、确保同样的图片url不会下载多次
8...
OC对象的本质
Objective-C的本质
我们平时编写的Objective-C代码,底层实现其实都是C\C++代码
所以Objective-C的面向对象都是基于C\C++的数据结构实现的Objective-C的对象、类主要是基于C\C++的结构体实现的将Objective-C代码转换为C\C++代码 xcrun -sdk iphoneos clang -arch arm64 -rewrite-objc OC源文件 -o输出的cpp文件,(PS: 模拟器(i386)、32bit(armv7)、64bit(arm64))
一个OC对象在内存中的布局
...
iOS图片内存优化
基于现在iOS11新生成的图片都是HEIF,该图片使用UIImage(named: name)已不在那么优雅,图片大小为1.8m大小的,读进手机内存,直接飙升了45M,这是我们不想看到的结果,一个页面有多个这样子的图的话,恐怕就是灾难了。
既然原图不能读入,那么如何可以用更少的内存和CPU来解决呢?
这就要先了解该图片的编码了。
HEIC HEIF
带有元数据的HEIF的另一种形式。HEIC文件包含一个或多个以“高效图像格...
弱符号实现 iOS 组件化解耦
强弱符号简述
函数和全局变量编译后需要有唯一的符号名,在链接时才不会混淆。程序员所写代码中的变量名会经过修饰后作为符号名,比如 C 中fun会被修饰为_fun。而符号分为弱符号与强符号,对于 C/C++ 来说,编译器默认函数和已初始化的全局变量为强符号,未初始化的全局变量为弱符号,可以使用__attribute__ ((weak))定义一个弱符号,编译器决议符号时有如下规则:
不允许强符号被多次定义。多个符...
iOS 多线程面试题(死锁)
死锁就是队列引起的循环等待
1、一个比较常见的死锁例子:主队列同步
- (void)viewDidLoad {
[super viewDidLoad]
;
dispatch_sync(dispatch_get_main_queue(), ^{
NSLog(@"deallock");
});
// Do any additional setup after loading the view, typically from a nib.
}复制代码
在主线程中运用主队列同步,也就是把任务放到了主线程的队列中。 同步对于任务是...
iOS 后台播放静音文件 延迟APP的存活
创建
AudioManager.swift
import Foundation
import AVFoundation
import UIKit
class AudioManager: NSObject {
static let shared = AudioManager()
fileprivate let audioSession = AVAudioSession.sharedInstance()
fileprivate var backgroundAudioPlayer: AVAudioPlayer?
fileprivate var backgroundTimeLength = 0
fileprivate var timer: Timer?
// 是否开启后台自...
Swift中的开关按钮(UISwitch)的用法实例
如何创建开关,以及监听它值的改变,代码如下:
import UIKit
class ViewController: UIViewController {
var stydySwitch : UISwitch!
override func viewDidLoad() {
super.viewDidLoad()
stydySwitch = UISwitch()
//设置位置(开关大小无法设置)
stydySwitch.center = CGPoint(x: 100, y: 100)
//设置默认值
stydySwitch.isOn = true
...
swift 中的UILabel属性用法及介绍
1.创建
letlabel =UILabel(frame:CGRect(x:30,y:100,width:200,height:40))
view.addSubview(label)
2.设置背景颜色
label.backgroundColor=UIColor.cyan;
3.设置文本字
label.text="xingweixin zhamaotu "
4.设置字体颜色
label.textColor=UIColor.red
5.字体设置
设置字体样式和大小
label.font=UIFont(name:"Zapfino",size:15)
设置字体大小
label.font=UIF...
Swift中的UIImageView的简单介绍
1、UIImageView的介绍
UIImageView 是App图层话开发的重要类。你在App中看到的那些绚丽的画面基本都和UIImageView有关系。它就是App图片展示的容器。
2、UIImageView 的属性介绍和方法
1、初始化
/**
UIImageView 的初始化
*/
var NetWorkImageView = UIImageView.init()
NetWorkImageView = UIImageView.init(frame: self.view.frame)
NetWorkImageView = UIImageView.init(image: UIImage...
使用 SwiftUI 变成一个简单的app
在 WWDC 大会开始一个星期以来,大家纷纷为今年的 SwiftUI 、昏暗模式、可更新的 CoreML 模型兴奋不已。在接下来的一周,我将会逐一介绍这些新玩意。首先从 SwiftUI 开始吧。SwiftUI 是苹果大家族中用来构造 APP 的全新方法。
SwiftUI 是一个声明式的基于组件的框架。你需要完全忘记曾经的 MVC 概念——在这种模型中,每个视图和模型之间都必须有一个控制器。在 SwiftUI 中只有状态的概念,同时视图继承...