- 博客(81)
- 资源 (29)
- 收藏
- 关注
原创 iOS导航栏返回按钮
之所以取 self.viewControllers.last 的最后一个,因为可能控制addsubController ,有从subVC 跳转到其他的控制器。
2023-11-07 11:41:23 87
原创 Mac OS系统系统环境变量
目前苹果系统的更新,设置环境变量也有所变化,新版本的macOS Catalina开始,新用户的默认shell改为了zsh查看默认shell echo $SHELL如果是/bin/bashvim ~/.bash_profile编辑内容source ~/.bash_profile如果是/bin/zshsource ~/.zshrc编辑内容source ~/.zshrc...
2022-04-07 19:01:05 475
原创 使用KVC提取集合的部分元素,或简单运算
集合运算支持5中@avg, @count , @max , @min ,@sum5@interface Book : NSObject@property (nonatomic,copy) NSString* name;@property (nonatomic,assign) CGFloat price;@end@implementation Book@endBook *book1 = [Book new];book1.name = @"The Great Gastby";bo
2022-02-14 11:41:30 953
原创 类似今日头条的滑动标题,滚动标题
类似今日头条的滑动标题pod 'LCCPageView'//import LCCPageView fileprivate func setupUI() {// let titles = ["你好","爱上","颠覆","颠信"] let titles = ["你好","阿双方就开始","阿瑟","阿斯顿发","时代","你好","阿双方就开始","阿瑟","阿斯顿发"] let config = PageTitleConfig
2022-01-11 17:51:11 1057
原创 IOS 关于锁
前言为什么需要锁:多条线程存在同时操作(删、查、读、写)同一个文件or对象or变量。如果不是同时或者不是同一个那就不用加锁了。关键变量:必须是“同时”,“同一事物”自旋锁OSSpinLock个人理解:就是一直等,忙等,一直while 到锁被解开,自旋锁不会让等待的线程进入休眠状态已经废弃,容易出现优先级反转关于优先级反转:现在有2个高优先级线程A,一个低优先级线程B情况1:A先获得锁,执行A线程的任务,然后B获取锁,执行B的任务。正常情况2:B先获得锁,因为B是低优先级线程,这个时候系统
2022-01-11 12:23:26 1341
原创 swift 播放Gif图片
// 1.加载Gif图片, 并且转成Data类型 guard let path = Bundle.main.path(forResource: "demo.gif", ofType: nil) else { return } guard let data = NSData(contentsOfFile: path) else { return } // 2.从data中读取数据: 将data转成CGImageSource对象
2021-12-10 11:57:06 922
原创 Lable描边
override func drawText(in rect: CGRect) { // 1.获取上下文 let context = UIGraphicsGetCurrentContext() // 2.给上下文线段设置一个宽度, 通过该宽度画出文本 context?.setLineWidth(5) context?.setLineJoin(.round) context?.setTextDra
2021-12-10 11:32:14 1394
原创 Swift 使用协议加载Xib
import UIKitprotocol NibLoadable {}extension NibLoadable where Self : UIView { static func loadFromNib(_ nibname : String? = nil) -> Self { let loadName = nibname == nil ? "\(self)" : nibname! return Bundle.main.loadNibNamed(lo
2021-12-08 14:25:41 1533
原创 粒子动画,做礼物,雪花等特效
extension Emitterable where Self : UIViewController { func start() { // 1.创建发射器 let emitter = CAEmitterLayer() // 2.设置发射器的位置 emitter.emitterPosition = CGPoint(x: view.bounds.width * 0.5, y: -60) .
2021-12-08 12:17:20 279
原创 一种使用协议代替NSNotificationCenter 的方案
写在前面关于NSNotificationCenter 大家并不陌生,今天我们就来简单的聊聊。NSNotificationCenter and Delegate 都是可以做到通知去做某事,NSNotificationCenter 可以通知多个,Delegate 只能通知一个。这是Notification的优点,但同时也是它的缺点。在多人合作的项目中,我们经常会出现一些尴尬的情况,发出一个通知后,数据就被其他类监听,然后数据就被莫名其妙的修改了,这种问题如果开始没有想到是通知的锅,就很难排查了发出通知
2021-11-29 16:46:52 876
原创 AWSS3文件断点下载,分片上传,断点续传
LCCFileService支持断点续传支持断点下载大文件分片上传最大同时上传,下载队列可控上传,下载,进度多种方式监听可以自定义下下载,上传器(目前是封装的亚马逊AWSS3)秒传,秒下载(通过MD5和FileKey,判定文件是否已经上传或者下载,如果是,直接进行copy 操作)pod 'LCCFileService'github地址上传第一步:添加下载器 _netService = [[LCFileNetService alloc] init]; [_netService
2021-11-29 15:10:22 5307
原创 获取手机的IP地址
swift/// 获取本地IP 地址,可能是局域网的地址 @objc public static func getIphoneIpAddress() -> String{ var addresses = [String]() var ifaddr : UnsafeMutablePointer<ifaddrs>? = nil if getifaddrs(&ifaddr) == 0 { var ptr =
2021-11-24 17:50:48 2728
原创 自定义组件化Pod资源加载
第一步:添加资源将资源放到LCCChinaIP/Assets目录文件下,我这里添加的资源为IPSource.bundle我的工程叫:LCCChinaIP,通过pod lib create LCCChinaIP 会自动生成这样的一个文件夹第一步:配置podspec s.resource_bundles = { 'LCCChinaIP' => ['LCCChinaIP/Assets/*'] }这样的配置会在安装包理自动生成一个LCCChinaIP.bundle 资源包,里面就
2021-11-24 17:23:32 934
原创 关于OC+Swift 混编的单元测试的配置
https://medium.com/if-let-swift-programming/ios-tests-working-with-objective-c-and-swift-class-together-aaf40f91a27c
2021-05-14 18:40:17 196
原创 iOS苹果原生系统推送通知
准备工作下载推送测试程序SmartPush ,并用xcode 运行安装创建工程对应的推送证书,一个是Apple Push Notification service SSL (Sandbox) 和Apple Push Notification service SSL (Sandbox & Production),前者只能给开发者用Xcode安装的app推送,后者可以给所有app推送开发获取权限并申请device token- (void)notification:(UIApplica
2021-01-06 18:12:18 1076
原创 iOS组件化,私有库搭建
摘要iOS 中,我们经常使用pod ,同时也可以使用组件化开发的方式对代码进行物理隔离,让工程底层彻底解耦,当然自己的工程代码肯定不能上传到公共库上,所以本篇文章描述如何搭建一个自己的私有库准备工作:创建远程私有库的索引库 https://gitee.com/L63C/l63Specs.git [email protected]:L63C/l63Specs.git开始创建创建远程私有库 https://gitee.com/L63C/owt_ios.git git@
2021-01-06 09:32:46 1317
原创 Mac 安装depot_tools
官网地址下载源代码$ git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git加载a. 直接加载export PATH=/path/to/depot_tools:$PATHb. 加载到环境中1.打开 sodo vi ~/.bashrc or ~/.zshrc2.在最后一行加入:expo...
2020-11-20 15:55:35 1067
原创 代码的优雅
创建线程static dispatch_queue_t user_handel_queue(){ static dispatch_queue_t user_handel_queue_t ; static dispatch_once_t onceToken; dispatch_once(&onceToken, ^{ user_handel_queue...
2020-08-12 11:34:30 76
原创 《为什么精英都是时间控》——桦泽紫苑
这是一本关于时间管理的书籍,围绕专注力进行的一系列提高效率方法的研究,其实应该是表述为尝试。这一类书大部分应该不喜欢看,但是我总是喜欢看这一类,并且尝试去做,呃,至少对我的好处就是:可以按照书里的内容自律一段时间。专注力越高,工作效率越高,所以也就可以“凭空捏造”一些时间出来了。这本书主要内容就是如何提高专注力的方法进行一些分享,主要包含在专注力高的时候做需要专注力高的工作,并且专注力:清晨...
2020-06-19 13:48:42 661 1
原创 iOS WCDB 使用
iOS WCDB使用准备简介WCDB 是基于SQLCipher,而SQLCipher 又是基于SQLite.故是一种关系型数据库,我们在设计表的时候,需要满足数据库设计的3范式ORM:类字段绑定。可以理解为官方提供了一个简单的方式,OC类属性到数据库表头的映射搭建使用初始化基本操作高度封装#import <WCDB/WCTInterface+Convenient.h&...
2020-06-15 14:30:56 1947
原创 iOS 当前系统的语言
获取当前系统支持的语言[NSLocale availableLocaleIdentifiers] "eu", "hr_BA", "en_CM", "en_BI", "en_AE", "rw_RW", "ast", "en_SZ", "he_IL", "ar", "uz_Arab", "en_PN", ...
2020-05-25 18:14:50 705
原创 fastlane iOS自动打包
fastlane 打包用于无人值守提交应用包到TestFlight ,蒲公英,fir.im等第三方平台,感觉觉得速度方面可能会慢一点,但是优势在于无人值守自动拉取最新代码自动clean,保证代码没有缓存干扰自动打tag标签安装个人建议,专门用一台电脑来打包,mac 是支持远程控制的,或者是用一个配置比较好的电脑,让他给你建一个用户,你就可以使用他的电脑了,而且不会耽...
2020-01-17 12:22:49 370
原创 UML初体验
Class Diagram 类图Package Diagram 包图Object Diagram 对象图Composite Structure Diagram 组合结构图Component Diagram 组件图Deployment Diagram 部署图Use Case Diagram 用例图Sequence Diagram 时序图Communication Diagram 协作...
2020-01-17 10:44:18 202
原创 阴影效果
self.loginBtn.layer.shadowOffset = CGSizeMake(0, 0); self.loginBtn.layer.shadowColor = [UIColor redColor].CGColor; self.loginBtn.layer.shadowRadius = 150; self.loginBtn.layer.s...
2019-08-12 11:43:47 113
原创 买房签合同注意事项
验文件五证包括:建设用地规划许可证、建设工程规划许可证、建设工程开工证、国有土地使用证、商品房预售(销售)许可证。其中最主要国的是土地使用证和预售(销售)许可证。特别要提醒购房者有两点:一是一定要看原件,复印件很容易作弊;二是要看清楚您所预购的房屋是不是在预售范围之内,以确保将来顺利的办理产权证。买期房要查看开发商是否有预售许可证,而买现房则要查看开发商是否具有该房屋的大产证和《...
2019-01-05 11:22:13 232
原创 IOS内存分区
代码区存放编译后的执行代码常量区存放常量字符串,只读。eg: @"123"全局区/静态区分为数据区(已初始化)的和BBS区(未初始化) 两部分。主要存放全局变量和静态变量。eg:static NSString str2 = @"string"堆 (heap)需要自己动态的申请创建、管理、释放内存。大小不固定,内存分配由系统完成。内存地址,由低到高延伸。eg:函数中定义: [N...
2018-12-25 11:24:52 280
转载 关于线程的操作
关于iOS 线程的操作,推荐看下面的几篇文章,整理的特别清晰iOS 多线程:『pthread、NSThread』详尽总结iOS 多线程:『GCD』详尽总结iOS 多线程:『NSOperation、NSOperationQueue』详尽总结iOS 多线程:『RunLoop』详尽总结...
2018-12-24 10:40:46 104
原创 多线程基础的理解(并发,并行,串行,异步,同步)
并发在某个时间段内,多个事件同时执行,某一个时刻,只有一个事件正在执行,在这个时间段内,CPU一会儿执行这个事件,一会儿执行其他事情,只是间隔时间很多,感觉是在同时进行。并行在某个时刻,许多事情同时进行。同时执行的事情依赖于CPU 的数量,即一个CPU做一件事情,让这些事情真正意义上的同时执行。串行所有的事情,按照一定顺序先后执行。注意:这些的先后只是针对事件的开始,即一...
2018-12-19 15:06:42 156
原创 进程与线程
进程与线程进程:是一个动态的概念。 狭义定义:进程就是一段程序的执行过程。 广义定义:进程是一个具有一定独立功能的程序关于某个数据集合的一次运行活动。它是操作系统动态执行的基本单元,在传统的操作系统中,进程既是基本的分配单元。线程:独立运行和独立调度的基本单位。线程是进程中执行运算的最小单位。一个进程可以至少包含一个线程。进程是最基本的资源分配单元。线程是CPU 调度的最...
2018-12-18 17:30:21 88
原创 IOS基础之切回到主线程的N种方式
方式一:GCD (最常用)使用GCD又有2种方式:异步回到主线程和同步回到主线程。2种方式的差别在于是否会阻塞原来的线程。见下方的代码和日志异步回到主线程(建议使用)dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{ // 需要在主线程执行的代码 ...
2018-12-01 19:10:56 3605 1
原创 IOS基础之copy与mutableCopy / 浅拷贝与深拷贝
本篇寄语:青天为屋瓦,日月做窗棂,四三五岳为梁柱,天地犹如一敞厅copy 与mutableCopy很多人都有这样的误会:copy== 浅拷贝? mutableCopy == 深拷贝NO! NO! NO!是深拷贝还是浅拷贝不能仅仅根据copy和mutableCopy来判断,还要看被拷贝的对象对象对象类遵守协议不可变对象NSString NSArr...
2018-12-01 17:52:56 111
原创 iOS基础之属性@property
本篇寄语:我们还有很多事情要做, 该来的挡也挡不住 。 会越来越好的, 还有什么不开心的呢? 该工作的工作, 该睡觉的睡觉, 还是一样的啊, 是你的自然不会走。atomic与nonatomic关于这个问题,儒君拜读过bbum的观点,综合官方文档:atomicatomic 是默认的属性,即如果声明一个变量时候,如果不修饰,就默认是atomic。用atomic修饰属性后,系统...
2018-11-26 19:44:17 115
原创 关于引用计数的遗留问题
遗留问题#import "ViewController.h"@interface RCTest ()@property(nonatomic,copy)NSMutableString *s;@end@implementation RCTest@end@interface ViewController ()@end@implementation ViewController...
2018-11-26 00:42:43 164
原创 正则表达式
第一次认真的写一次博客,虽然很多都是copy ,但把这些整理和总结出来,一边理解,自己也熟悉不少。本篇寄语:在生活中,每一个强大的人,都会有一段段没人帮忙、没人支持、没人嘘寒问暖的日子,从而让他们熬出另外一个世界常用正则表达式校验数字的表达式 1 数字:^[0-9]*$ 2 n位的数字:^\d{n}$ 3 至少n位的数字:^\d{n,}$ 4 m-n位的数字:^\d...
2018-11-15 23:48:21 309
13.1 (17A5837a).zip
2019-09-20
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人