iOS
文章平均质量分 61
客户端技术
这个作者很懒,什么都没留下…
展开
-
【iOS】Block、单例使用总结
block的循环引用要注意加 __weak避免循环引用__weak ViewController *weakSelf = self;1.block的声明//声明一个blocktypedef NSString *(^WXYTestBlock)(NSString *name, int age);- (void)printWithName:(NSString *)name age:(int)age block:(WXYTestBlock)block;以上声明了一个名字叫做WXYTestBloc原创 2022-02-14 17:02:51 · 1244 阅读 · 0 评论 -
【iOS】@property属性声明-属性关键字
iOS常用属性关键字总结原创 2021-12-07 10:35:44 · 2149 阅读 · 0 评论 -
【iOS】下的读写锁的简单实现
废话开篇:iOS 下的多线程的技术的应用衍生出了锁的机制,试想,如果 iOS 下没有多线程的概念,所有的代码都会在同步环境下执行,那么,也就不会产生争夺资源情况的发生,当然,也就没有办法利用多核的优势。所以,多线程的应用是广布的,而锁的应用是局部的,所以,二者应相辅相成,来达到提高运行效率的同时提高程序运行的稳定性。基本的三种锁的类型:互斥锁、自旋锁、读写锁。其中,互斥锁 多线程在访问加锁中的临界区前,会进入休眠,一直等待解锁后系统调度;自旋锁 多线程在访问加锁中的临界区前,不进入休眠,会一直忙等。原创 2021-11-08 11:17:15 · 1919 阅读 · 0 评论 -
【IOS】Swift中 where关键字的使用
Swift开源库里经常能看到 where 关键字的使用1、用在do catch里面enum ExceptionError:Error{ case httpCode(Int)}func throwError() throws { throw ExceptionError.httpCode(500)}//do catchdo{ try throwError()}catch ExceptionError.httpCode(let httpCode) where httpCo原创 2021-10-22 11:12:11 · 1548 阅读 · 0 评论 -
iOS开发经验总结
iOS开发经验总结一、iOS加载启动图的时候隐藏statusbar只需需要在info.plist中加入Status bar is initially hidden 设置为YES就好二、 给navigation Bar 设置 title 颜色UIColor *whiteColor = [UIColor whiteColor];NSDictionary *dic = [NSDictionary dictionaryWithObject:whiteColor forKey:NSForegroundCo原创 2021-10-17 16:08:10 · 539 阅读 · 0 评论 -
【iOS】崩溃收集和解析
背景在日常开发中,app难免会发生崩溃。简单的崩溃还好说,复杂的崩溃就需要我们通过解析Crash文件来分析了,解析Crash文件在iOS开发中是比较常见的。获取崩溃信息方式在iOS中获取崩溃信息的方式有很多,比较常见的是使用友盟、云测、百度等第三方分析工具,或者自己收集崩溃信息并上传公司服务器。下面列举一些我们常用的崩溃分析方式:使用友盟、云测、百度等第三方崩溃统计工具。自己实现应用内崩溃收集,并上传服务器。Xcode-Devices中直接查看某个设备的崩溃信息。使用苹果提供的Crash崩原创 2021-10-12 18:58:36 · 1721 阅读 · 0 评论 -
【iOS】OC Swift混编
OC Swift混编iOS程序的入口在AppDelegate上面默认有个 @main 标记,这表示编译器自动生成入口代码(main函数代码), 自动设置AppDelegate为APP的代理也可以删掉 @main,自定义入口代码:新建一个main.swift文件import Foundationimport UIKitclass AYApplication: UIApplication {}UIApplicationMain(CommandLine.argc,原创 2021-10-08 02:49:30 · 337 阅读 · 0 评论 -
【iOS】Swift类
类的定义和结构体类似,但编译器并没有为类自动生成可以传入成员值的初始化器class Point { var x: Int = 0 var y: Int = 0}let p1 = Point()let p2 = Point(x: 10, y: 20) // 报错let p3 = Point(x: 10) // 报错let p4 = Point(y: 20) // 报错struct Point { var x: Int = 0 var y: Int = 0.原创 2021-09-14 15:36:01 · 124 阅读 · 0 评论 -
【iOS】Swift结构体
在Swift标准库中,绝大多数的公开类型都是结构体,而枚举和类只占很小一部分比如Bool``Int``Double``String``Array``Dictionary等常见类型都是结构体struct Date { var year: Int var month: Int var day: Int}var date = Date(year: 2021, month: 9, day: 14)所有的结构体都有一个编译器自动生成的初始化器 (initializer, 初始原创 2021-09-14 14:19:44 · 120 阅读 · 0 评论 -
IOS 多线程相关问题总结(一)GCD
多线程技术方案主要分为以下几类:其中的GCD又分为以下几类:GCD调用的四种组合(异步分派一个任务到并发队列上面)主要考察 同步异步的区别和串行/并发的理解(1)同步串行理解上面代码会产生死锁原因是:队列引起的循环等待,如下图主队列里提交了一个 viewDidLoad 和一个BLock ,这两个任务最终都要分配到主线程去处理 例如先执行 viewDidLoad 执行过程中他会调用 BLock 它要依据主队列的一个性质( 先进先出 ) 所以只有等到viewDidLoad 处理完成才原创 2021-09-09 15:44:00 · 140 阅读 · 0 评论 -
【IOS】崩溃复活
IOS应用崩溃一直是一个很苦恼的问题,而崩溃的同时又未获取bug原因,更令人苦恼。好在苹果自带的crash检测api,以及runloop可以让应用复活一次,不过第二次依旧会崩溃,但是还是一个很实用的小技巧。以下是IOS崩溃复活的类和使用方法#import "CrashHandler.h"//Appdelagte中注册crash记录上报- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOption原创 2021-09-09 09:44:59 · 143 阅读 · 1 评论 -
【IOS】SWIFT关键字属性之@autoclosure
【IOS】SWIFT关键字属性之@autoclosureSwift 中有很多有用的属性关键字。@autoclosure 是其中之一,是一个非常常用的属性。为了更好的说明这个属性的作用,将用一个ifelse的例子进行说明。func ifelse<V>(_ condition: Bool, valueTrue: () -> V, valueFalse: () -> V) -> V { condition ? valueTrue() : valueFalse()}原创 2021-09-09 09:34:04 · 339 阅读 · 0 评论 -
2021-05-25
@synchronizeddispatch_semaphoreNSLockNSRecursiveLock递归锁NSConditionLock条件锁NSConditionpthread_mutexpthread_mutex(recursive)OSSpinLock锁是最常用的同步工具。一段代码段在同一个时间只能允许被有限个线程访问,比如一个线程 A 进入需要保护代码之前添加简单的互斥锁,另一个线程 B 就无法访问,只有等待前一个线程 A 执行完被保护的代码后解锁,B 线程才能访问被保护代.原创 2021-09-08 15:57:49 · 529 阅读 · 0 评论 -
【iOS】自动布局(AutoLayout)和手写布局(frame)
1.1 AutoLayout原理iOS 中视图所需要的布局信息只有两个,分别是 origin/center 和 size,在这里我们以 origin & size 为例,也就是 frame 时代下布局的需要的两个信息;这两个信息由四部分组成:x & ywidth & height以左上角的 (0, 0) 为坐标的原点,找到坐标 (x, y),然后绘制一个大小为 (width, height) 的矩形,这样就完成了一个最简单的布局。Auto Layout 的布局方式与上面所说原创 2021-07-19 17:20:09 · 1403 阅读 · 1 评论 -
Objective-C 的空值
1原创 2021-06-30 15:12:33 · 195 阅读 · 0 评论 -
【IOS】OC底层-结构体指针内存对齐
【IOS】OC底层-结构体指针内存对齐1、首先创建一个项目并创建一个对象。为了方便直接在main函数里面测试 2、使用终端命令 cd到main.m文件所在目录 输入终端命令: xcrun -sdk iphoneos clang -arch arm64 -rewrite-objc main.m -o main-arm64.cpp 这里需要注意:xcrun :Xcode 工具,-sdk: 平台 iphoneos:iOS平台, -arch: 基于什么架构 苹果手机是基于arm64的,-原创 2021-06-25 10:04:29 · 222 阅读 · 0 评论 -
iOS UI视图相关问题总结(一)UITableVIew相关(重用机制与数据源同步问题)
iOS UI视图相关问题总结(一)UITableVIew相关(重用机制与数据源同步问题)1.UITableVIew相关(重用机制与原理)如图所示: tableview向上滑动,A1被加入到重用池当中(在屏幕以外),(A3到A5在屏幕中显示,A2和A6在屏幕当中显示一半)如果继续滑动,A7就会从重用池当中根据 指定的identfer标识符 取出一个可重用的cell 。如果A1到A7都是同一个标识符的话,A7就可以复用A1所创建cell的内存。这样就可以实现复用或重用的目的代码示例:通过自定义U原创 2021-06-16 10:57:12 · 322 阅读 · 0 评论