去面试腾讯iOS开发要达到咋样的水准?
在风口上时,猪都能飞,但风口过去,当一个就业市场不再那么火爆时,等待的必然是弱者的淘汰。
程序员的职业发展分类
程序员的职业发展大体分为四类。
1)一直钻研技术
说到底打铁还需自身硬,对于程序员这靠技术吃饭的职业,技术当然是至关重要的。
所以,对于那些热爱技术,编码能高潮的技术男这是一...[2021/5/6]
SwiftUI 简明教程之文本与图片
本文为 Eul 样章,如果您喜欢,请移步 AppStore/Eul 查看更多内容。
Eul 是一款 SwiftUI & Combine 教程类 App(iOS、macOS),以文章(文字、图片、代码)配合真机示例(Xcode 12+、iOS 14+,macOS 11+)的形式呈现...[2021/4/19]
IOS Safari keyup不生效如何解决?
H5 项目做了一个 搜索,使用的是keyup触发,后来发现 ios系统不生效,
解决方案:
<input
id="master_college"
type="text"
name="ma...[2021/4/19]
带你解决80%的iOS开发难题
iOS开发已经走过了十多年时间,移动圈子里相继诞生了组件化、热修复、动态化、大前端、Flutter、小程序等热门技术,给人一种“乱花渐欲迷人眼”的感觉。
但是从本质来看,它们背后都是一些通用的底层技术和创新的设计思想。热修复、动态化和大前端的底层技术,都是 JavaScript...[2021/4/19]
Swift 进阶(十二)高级运算符、扩展、访问控制
高级运算符
溢出运算符(Overflow Operator)
Swift的算数运算符出现溢出时会抛出运行时错误
Swift有溢出运算符&+、&-、&*,用来支持溢出运算
var min = UInt8.min
print(min &- 1) 255, In...[2021/4/12]
Swift 进阶(七)方法、下标
方法(Method)
基本概念
枚举、结构体、类都可以定义实例方法、类型方法
实例方法(Instance Method):通过实例对象调用
类型方法(Type Method):通过类型调用
实例方法调用
cla Car {
var count = 0
func...[2021/4/12]
Swift 进阶(九)协议、元类型
协议(Protocol)
基本概念
协议可以用来定义方法、属性、下标的声明,协议可以被结构体、类、枚举遵守
protocol Drawable {
func draw()
var x: Int { get set } get和set只是声明
var y: Int {...[2021/4/12]
Swift 进阶(十)错误处理、泛型Swift 进阶(十)错误处理、泛型
错误处理
错误类型
开发过程中常见的错误有
语法错误(编译报错)
逻辑错误
运行时错误(可能会导致闪退,一般也叫做异常)
....
自定义错误
Swift中可以通过Error协议自定义运行时的错误信息
enum SomeError: Error {
case illegalArg...[2021/4/12]
Swift 进阶(十一)String、Array的底层分析Swift 进阶(十一)String、Array的底层分析
String
我们先来思考String变量占用多少内存?
var str1 = "0123456789"
print(Mems.size(ofVal: &str1)) 16
print(Mems.memStr(ofVal: &str1)) 0x3736353433323...[2021/4/12]
iOS底层原理(二)KVO和KVC
KVO
KVO的全称是Key-Value Observing,俗称“键值监听”,可以用于监听某个对象属性值的改变
KVO的使用
可以通过addObserver: forKeyPath:方法对属性发起监听,然后通过observeValueForKeyPath: ofObject: change:...[2021/4/12]
iOS底层原理(三)Category
Category的本质
Category的底层结构
1.我们先给Person增加一个Person+Eat的分类
@interface Person (Eat) <NSCopying, NSCoding>
- (void)eat;
@property (a ign, nonato...[2021/4/12]
iOS底层原理(四)block
block的本质
1.block的基本用法
不带参数无返回值的block
void (^block)(void) = ^{
NSLog(@"Hello, World!");
};
block();
带参数无返回值的block
void (^block)(int, int) = ...[2021/4/12]
iOS-宫格拼图
思路
要求设计思路是类似手持拼图游戏,拼图需求要求有一块为空白版,作为移动方块的预留位置用,通过选择图片后在起初对所有图像方块随机打乱顺序时,发现随机打乱顺序,没办法拼图完成,拼图移动是空白快最临近的上下左右四个图像块的移动,在打乱顺序的时候,也要按照这个算法逻辑实现,才能拼图完成;
另外逻辑...[2021/4/12]
iOS底层原理(五)Runtime(上)iOS底层原理(五)Runtime(上)
什么是Runtime
Objective-C是一门动态性比较强的编程语言,跟C、C++等语言有着很大的不同;Objective-C的动态性是由Runtime API来支撑的
Runtime API提供的接口基本都是C语言的,源码由C\C++\汇编语言编写
方法类型的底层结构
在Cla 对象的...[2021/4/12]
iOS底层原理(五)Runtime(下)iOS底层原理(五)Runtime(下)
动态方法解析
如果消息发送阶段不成功,那么就会进入到动态方法解析阶段
【第一步】 我们还是先从objc源码里找到函数resolveMethod_locked来看,分别对应着类对象和元类对象做了不同的调用处理
static NEVER_INLINE IMP
resolveMethod_lock...[2021/4/12]
iOS底层原理(六)RunLoopiOS底层原理(六)RunLoop
什么是RunLoop
从字面意思来看,就是运行循环的意思,其实就是在程序运行过程中循环做一些事情
RunLoop的应用范畴
下面几个技术都需要在RunLoop下才能进行
定时器(Timer)、PerformSelector- GCD Async Main Queue- 事件响应、手势识别、界...[2021/4/12]
iOS底层原理(七)多线程(上)
基本概念
进程和线程
进程:进程是指在系统中正在运行的一个应用程序
线程:1个进程要想执行任务,必须得有线程(每1个进程至少要有1条线程)
一个进程(程序)的所有任务都在线程中执行
1个线程中任务的执行是串行的
进程和线程的比较
线程是CPU调用(执行任务)的最小单位
进程是CPU分配资源和...[2021/4/12]
iOS底层原理(七)多线程(中)
多线程的安全隐患
一块资源可能会被多个线程共享,也就是多个线程可能会访问同一块资源;当多个线程访问同一块资源时,很容易引发数据错乱和数据安全问题### 问题案例
卖票和存钱取钱的两个案例,具体见下面代码
@interface BaseDemo: NSObject
- (void)money...[2021/4/12]
iOS底层原理(七)多线程(下)
iOS中的读写安全
atomic
atomic用于保证属性setter、getter的原子性操作,相当于在getter和setter内部加了线程同步的锁原子性:原子即为最小的物理单位,意味不可再分割;即代码都为一个整体在同一线程进行操作
atomic只是保证setter、getter是线程安全...[2021/4/12]
iOS底层原理(八)内存管理(上)
iOS程序的内存布局
iOS程序的内存布局顺序如以下所示
我们可以通过打印内存地址来验证
int a = 10;
int b;
int main(int argc, char * argv[]) {
@autoreleasepool {
static int c...[2021/4/12]
iOS底层原理(八)内存管理(下)
weak指针
我们通常会使用__weak来对变量进行弱引用,被__weak修饰的变量一旦被释放,会自动置为nil
__unsafe_unretained的作用也是将变量变成弱指针,但是不同于__weak的原因是修饰的变量释放后并不会置为nil
weak的实现原理
我们可以在dealloc析构...[2021/4/12]
Swift 进阶(四)结构体和类
结构体
基本概念
在Swift标准库中,绝大多数的公开类型都是结构体,而枚举和类只占很小一部分
比如Bool、Int、String、Double、Array、Dictionary等常见类型都是结构体
struct Date {
var year: Int
var month:...[2021/4/6]
Swift 进阶(十七)源码分析
我们通过分析Swift标准库源码来更近一步了解Swift的语法
Array相关
map、filter的源码路径: wift-main tdlib/public/core/Sequence.swift
flatMap、compactMap、reduce的源码路径: wift-main tdli...[2021/4/6]
[iOS]dispatch_after()中self和weakself的使用[iOS]dispatch_after()中self和weakself的使用
苹果对编译器在不断优化,GCD方法中的block基本都不需要使用weakself,并不会造成循环引用。
dispatch_after官方文档中对block部分的说明:
一:使用self
从ViewControllerA push 到 ViewControllerB。ViewContro...[2021/4/6]
Swift 进阶(一)基础语法
Swift简介
在学习Swift之前,我们先来了解下什么是Swift
Swift是Apple在2014年6月WWDC发布的全新编程语言,中文名和LOGO是”雨燕“
Swift之父是Chris Lattner,也是Clang编译器的作者,LLVM项目的主要发起人
Swift版本
Swift历时...[2021/3/8]
iOS底层原理(一)Objective-C的本质
我们平时编写的Objective-C代码,底层实现其实都是C\C++代码,所以Objective-C的面向对象都是基于C\C++的数据结构实现的
OC对象的本质
Objective-C的对象、类主要是基于C\C++的结构体实现的
通过下面的命令可以将OC代码转换为C++代码来查看
cl...[2021/3/8]
iOS底层原理(九)性能优化
iOS中的卡顿优化
iOS中的屏幕成像原理
在讲解卡顿优化之前,我们先来思考一下,在iOS中,屏幕是怎么成像的呢
CPU和GPU
在屏幕成像的过程中,CPU和GPU起着至关重要的作用
CPU(Central Proce ing Unit,中央处理器)CPU的主要任务是进行对象的创建和销毁、对...[2021/3/8]
iOS底层原理(十)架构设计
iOS中的几种常用架构
MVC
MVC架构是以Model、Controller、View三者之间的关系来依赖的
Apple版的MVC
Apple最早的MVC的数据流向是以Controller为中心,在Model和View中间作为桥梁来衔接,而且Controller和Model、View之间的数...[2021/3/8]
“iOS开发” 金三银四如何快速技术晋升?
开篇寄语
谈谈工作:
2020年是多灾难的一年,对于我们每个人来说,健康地活着比什么都重要。很多公司都过得比较艰难,裁员更是普遍,所以对大部分来说保住饭碗就很不错了,更别说什么跳槽晋升了!
目前状况:
现在iOS开发还是比较忙的,尤其年边,加班现象特别明显!三个月的学习并不是每一个人...[2021/2/22]
突破瓶颈,“iOS开发”,跳槽面试必备题(针对年后面试者)
前言
现在iOS开发还是比较忙的,尤其年边,加班现象特别明显!三个月的学习并不是每一个人都能做到,每一天的坚持都是拉开你和其他的面试者的重要前提!
面试你是否准备好了?
一年之计在于春 金三银四马上降临,2020也已经过去许久,作为一个开发人员,你是否面上了自己理想的公司,...[2021/1/18]
抖音品质建设 - iOS启动优化《原理篇》
作者:字节跳动技术团队
前言
启动是 App 给用户的第一印象,启动越慢用户流失的概率就越高,良好的启动速度是用户体验不可缺少的一环。启动优化涉及到的知识点非常多面也很广,一篇文章难以包含全部,所以拆分成两部分:原理和实践。
本文从基础知识出发,先回顾一些核心概念,为后...[2021/1/11]
iOS中几种定时器的实现小结
在软件开发过程中,我们常常需要在某个时间后执行某个方法,或者是按照某个周期一直执行某个方法。在这个时候,我们就需要用到定时器。
然而,在iOS中有很多方法完成以上的任务,到底有多少种方法呢?经过查阅资料,大概有三种方法:NSTimer、CADisplayLink、GCD。接下来我就一一介绍它们...[2021/1/11]
Magic Book Pro 2019 Intel版 BIOS升级失败-重启后没有升级过程,解决方案
Magic Book Pro-2019-Intel版BIOS升级至1.16
使用官方程序更新BIOS,显示更新成功之后重启,发现并没有以往的BIOS升级过程,BIOS也并未升级。
后来发现,(无论是通过华为电脑管家;还是通过荣耀官网上的BIOS更新程序均无法升级)。 研究后发现,官方升...[2021/1/11]
iOS-贝塞尔画圆动画(圆圈进度百分比)iOS-贝塞尔画圆动画(圆圈进度百分比)
目标效果
实现
新建基于UIview的文件
.h
属性
/** 0 < accuracy < 1 */
@property (nonatomic,a ign) double accur...[2020/12/21]
6. UICollectionView Decoration View
6. UICollectionView Decoration View
UICollectionView 允许我们为每一个section、cell甚至是整个collectionView添加一个装饰视图。这玩意怎么说呢,就是添加了一些可复用视图,视图的frame可以随意设置,划重点是随意设...[2020/12/14]
Algorithm Of Swift -- 1.两数之和
题目描述:
给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。你可以假设每种输入只会对应一个答案。但是,数组中同一个元...[2020/12/14]
iOS-for循环快捷创建按钮(随意配置适配)
One
先总结下最近做项目遇到的一个小问题,创建UIView时,总是有一边会出现一条灰黑线,原因竟是在给view设置frame时的精确度问题,取整下即可;
ceilf(width)
Two
最近在项目里帮朋友简单写了一下这个需求,记录下以后用到方便配置,项目中的我可以放心删了;
...[2020/12/14]
2020年iOS自动打包脚本
2020年iOS自动打包脚本
1.准备工作
安装fastlane
至于fastlane是做什么的就不多说了,自行百度;
sudo gem install fastlane --verbose
安装成功后没有修改gem source 的修改一下,我用的是https: gems.ru...[2020/12/14]
2.Block实战
2.Block实战
问题来自:iOS开发基础:开发两年的你也不会写的Block
声明一个Block,并调用它。
声明一个Block型的属性。
声明一个方法,接受一个Block型的参数,并写出调用时传入的Block实参。
实现一个Block的递归调用(Block调用自己)。
实现一个方法...[2020/12/8]
Realm--: 简化iOS下Realm写入事务的最佳解决方案Realm--: 简化iOS下Realm写入事务的最佳解决方案
Realm--: 简化iOS下Realm写入事务的最佳解决方案(其他平台亦可借鉴次思路)
直接使用
Goto --> Github
开始阅读
解决痛点
痛点1,重复代码,本来增删改查一般两三行的,提交就占了2行,基本上代码量多一小半
[[RLMRealm defaultRea...[2020/12/8]
3.iOS14下UIPageControl自定义样式
3.iOS14下UIPageControl自定义样式
1.概览
首先在iOS14中UIPageControl中增加了几个新属性及方法:
表示当前的背景样式,枚举值
open var backgroundStyle: UIPageControl.BackgroundStyle
只...[2020/12/8]
iOS套路面试题之必考笔试手写算法题
作为开发者,有一个学习的氛围跟一个交流圈子特别重要,这是一个 我的iOS交流群:761407670,不管你是小白还是大牛欢迎入驻 ,分享BAT,阿里面试题、面试经验,讨论技术, 大家一起交流学习成长!
以下基本上以C语言实现为主
1.不用中间变量,用两种方法交换A和B的值?
...[2020/12/8]
iOS----------remote: HTTP Basic: Access denied
最近在提交代码的时候总是提示remote: HTTP Basic: Acce denied 看一下就知道可能是权限的问题 也可能是账号的问题,突然想到前段时间在托管平台修改了密码,所以就修改一下密码就可以了。所以就把账号和密码删除,重新添加,再次提交密码就会提...[2020/12/8]
4.如何在xib中正确设置颜色
4.如何在xib中正确设置颜色
写了半天发现还没人家写的好,直接转载了iOS开发之为App设置正确的设计颜色
简单总结一下
如果在开发的过程中发现Interface Builder(包括xib和storyboard)设置的颜色运行后始终无法得到正确的显示,那么这个时候可以问一下公司的设...[2020/12/8]
iOS Transform坐标变化
在使用CGContext时,由于Quartz 2D与UIKit坐标不一致,所以需要对context进行再一次的变化,达到预期的效果。
1. 不同坐标原点介绍
在Quartz 2D中,坐标原点在画布的左下角,而UIKit中,与屏幕坐标一致,以左上角为坐标原点。
如果以(0,0)点为原点...[2020/11/23]
Undefined symbols for architecture arm64:
Undefined symbols for architecture arm64:
"_Decoder_Interface_init", referenced from:
EM_DecodeAMRFileToWAVEFile...[2020/11/23]
1. RxSwift 创建可观察序列
empty() 方法初始化
创建了一个空内容的 Observable
let ob = Observable<Int>.empty()
先简单的写一种订阅的方法
ob.subscribe { print("执行了") }
just() 方法 传入默认值初始化
...[2020/11/23]
Sagit.Framework For IOS 开发框架入门教程16:屏幕旋转、屏幕强制旋转功能。
前言:
框架对屏蔽旋转做了很全面的封装处理,本篇来介绍一下使用屏幕旋转的相关功能。
屏幕旋转的相关方法定义:
#pragma mark 屏幕旋转
!屏幕旋转事件:【 return true 系统调用刷新布局([self.view refleshLayoutAfterRotate];...[2020/11/9]
[Swift]一些第三方库[Swift]一些第三方库
Kingfisher
地址 https: github.com/onevcat/Kingfisher
功能 加载网络图片
RxAlamofire
地址 https: github.com/RxSwiftCommunity/RxAlamofire
功能&...[2020/11/9]
iOS多线程之超实用理论+demo演示(可下载)iOS多线程之超实用理论+demo演示(可下载)
目录背景简介GCD、OperationQueue 对比核心理念区别GCD队列串行队列(Serial Queues)并发队列(Concurrent Queues)串行、并发队列对比图注意事项block(块)相关dispatch_afterdispatch_semaphoredispatch...[2020/11/9]