
iOS
文章平均质量分 64
流沙包
这个作者很懒,什么都没留下…
展开
-
[jenkins]iOS 自动打包上传 Appstore
环境mac 系统mac 系统上搭建 jenkins 服务其它请参考上级内容[jenkins]iOS 自动打包上传 fir直接上脚本// clean 内容xcodebuild clean -workspace ${workspace} -scheme ${scheme} -configuration Debug -sdk iphonesimulatorxcodebuild clean -workspace ${workspace} -scheme ${scheme} -configurati原创 2021-07-10 22:34:44 · 702 阅读 · 0 评论 -
[jenkins]iOS 自动打包上传 fir
环境Mac 系统作为服务器brew 安装 Jenkins,安装默认插件即可启动 Jenkins 服务器为了让局域网可以访问 Jenkins 可以修改如下配置打包前提是 Mac 服务器已经具有打包 iOS 的能力修改如下两个路径下的 httpListenAddress 配置 ip 为 0.0.0.0~/Library/LaunchAgents/homebrew.mxcl.jenkins.plist/usr/local/opt/jenkins/homebrew.mxcl.jenkins.pl原创 2021-07-04 20:37:17 · 360 阅读 · 0 评论 -
【Cocoapods】安装升级
安装sudo gem update --systemsudo gem uninstall cocoapods或sudo gem install cocoapods -n /usr/local/bin原创 2021-06-08 15:28:21 · 116 阅读 · 0 评论 -
【Sqlite3】命令行使用
简介sqlite3一款主要用于嵌入式的轻量级数据库,本文旨在为熟悉sqlite3基本命令提供技术文档。备注:本文所有操作均在root用户下进行。1、安装sqlite3brew install sqlite3mac 下安装sqlite3sqlite3 -version查看版本信息:2 、sqlite3常用命令sqlite3 test.db创建并打开数据库;注:如果不加数据库的名字,则为使用内存模式,在内存中创建表等。.database查看数据库文件信息命令(注意命令前带字符’.’).sch原创 2021-04-28 00:04:09 · 4415 阅读 · 0 评论 -
【iOS】 app 的优化
启动优化启动优化之前必须知道,app 启动的全过程;而想知道全过程,只要按照以下操作:Edit scheme -> Run -> Auguments 将环境变量 DYLD_PRINT_STATISTICS 设为 1则在启动过程,就会在 lldb 中打印出来;打印结果如下:Total pre-main time: 5.62 milliseconds (100.0%) dylib loading time: 25.33 milliseconds (450.5%)原创 2021-04-20 14:06:33 · 306 阅读 · 0 评论 -
【iOS】基础内存管理(招聘一个靠谱的 iOS)
转载参考:引用计数带来的一次讨论Objective-C 引用计数原理各个线程 Autorelease 对象的内存管理Practical Memory ManagementiOS内存管理Xcode 10 下如何创建可调试的objc4-723、objc4-750.1工程Block技巧与底层解析Objective-C Autorelease Pool 的实现原理《招聘一个靠谱的 iOS》iOS 中 weak 的实现原理iOS 底层解析weak的实现原理weak的生命周期:具体实现方法i转载 2021-02-19 15:57:09 · 163 阅读 · 0 评论 -
【iOS】lipo otool 动、静态库
查看库是否是动态库如果是动态库则会有 Mach-O dynamically linked shared library标记file xxxx.afile xxxx.framework/xxxxxxxx: Mach-O universal binary with 3 architectures: [arm_v7:Mach-O dynamically linked shared library arm_v7] [arm_v7s] [arm64]xxxx (for architecture ar原创 2021-02-08 17:40:54 · 960 阅读 · 2 评论 -
【iOS/动画】显式动画
创建动画类(CABasicAnimation, CAKeyframeAnimation,CASpringAnimation)如下:基础动画CATransaction.begin()self.layerView.backgroundColor = UIColor.green.cgColorlet baseanimation = CABasicAnimation()baseanimation.keyPath = "backgroundColor" // 这个值为 keypath 的值basean.原创 2021-01-31 22:12:54 · 411 阅读 · 0 评论 -
【iOS/动画】隐式动画
隐式动画系统默认在在 Layer 层上实现的动画,只要改变属性,系统就会自动作出默认实现的过度动画;例如:修改背景颜色红色为绿色,系统会默认有0.25秒的过渡动画。类似这样的动画为隐式动画隐式动画是在 iOS 平台创建动态用户界面的一种直接的方式,也是UIKit动画机制的基础事务解释什么是隐式动画。什么是事务。系统如何确定动画的类型和动画的执行时长。CoreAnimation 基于一个假设,屏幕上显示的任何东西都是可以做动画的。动画并不需要开发者打开,相反需要开发者主动关闭,即:动画默原创 2021-01-24 23:54:11 · 513 阅读 · 0 评论 -
【Swift】UnsafePointer等指针
指正分类UnsafePointer类似于 const Pointee *UnsafeMutablePointer 类似于 Pointee *UnsafeRawPointer 类似于 const void *UnsafeMutableRawPointer 类似于 void *UnsafeBufferPointerUnsafeMutableBufferPointerunsafeBitCastUnsafePointer/UnsafeMutablePointer打印属性指针var nic原创 2021-01-17 23:47:03 · 711 阅读 · 0 评论 -
【iOS/runtime/003】字典转模型、模型转字典和自定义 KVO
字典转模型字典转模型遍历字典获取 key valueobjc_msgSend() 调用 set 赋值函数指针写法:返回类型 (*名称)(params1, params2…)#import <objc/message.h>@implementation User- (instancetype)initWithDic:(NSDictionary *)dic { if (self = [super init]) { for (NSString* key i原创 2021-01-10 15:41:21 · 260 阅读 · 0 评论 -
【iOS/runtime/002】Swizzling 方法交换
Swizzling 方法交换TableView 默认空页面制作// UITableView+ex.h#import <UIKit/UIKit.h>#import <objc/runtime.h>@interface UITableView (ex)@property(strong, nonatomic)UIView *lgValue;@end// UITableView+ex.m#import "UITableView+ex.h"#define LGDe原创 2021-01-10 00:23:10 · 167 阅读 · 0 评论 -
【iOS/runtime/001】
介绍消息转发的机制消息转发的条件如何创建demo: OC 头文件中有方法名称,没有方法实现的时候会触发消息转发机制;从子类 isa 的 methodlist 中开始找方法实现,一直找到 rootClass, 如果没有找到则触发消息转发机制;消息转发类型动态转发// 动态转发(添加一个方法实现)+ (BOOL)resolveInstanceMethod:(SEL)sel快速转发// 快速转发(创建一个备用接受者)- (id)forwardingTargetForSelecto原创 2021-01-03 22:07:11 · 114 阅读 · 0 评论 -
【iOS/Swift】自定义操作符 prefix postfix infix
说明操作符预定义 prefix infix postfixprefix: 运算符在运算值的前方; postfix:运算符在运算值的后方;infix:运算符在运算值之间precedencegroup:定义运算符的其它属性prefix operator ^postfix operator ^-infix operator ^^代码示例// 前置:返回2的n次方prefix operator ^prefix func ^ (vector: Double) -> Double {原创 2020-12-07 17:31:16 · 1556 阅读 · 0 评论 -
【iOS/fastlane】自动发布ios_ipa
背景mac 笔记本安装 fastlane安装fastlane brew install fastlane切记及时更新 brew upgrade fastlane,否则可能会出现无法使用的情况终端切换到ios工程目录中 fastlane init,项目中会生成fastlane文件夹配置文件夹中的各个文件 Appfile Fastfile Pluginfile report.xmlAppfile#app_identifier("com.alex.luan") # The bun原创 2020-10-16 22:58:23 · 850 阅读 · 0 评论 -
【iOS-Swift】为什么是面向协议的编程 struct+protocol
swift 基本类都是继承于协议swift 可以通过协议的默认实现,进行无痕扩展Demo 给UIView 无痕扩展一个方法// 给 UIView 扩展一个方法 test()// 扩展方式优美有和谐struct TestFunction<TE> { let base: TE init(_ te: TE) { base = te }}protocol TestFunctionProtocol { associatedtype Com.原创 2020-10-15 15:20:11 · 572 阅读 · 2 评论 -
【iOS】系统判断网络
iOS 网络状态判断#import <SystemConfiguration/SCNetworkReachability.h>-(void)test { NSLog(@"asdf"); SCNetworkReachabilityFlags flags; SCNetworkReachabilityRef netReachability = SCNetworkReachabilityCreateWithName(kCFAllocatorDefault, "ob");原创 2020-09-05 11:27:57 · 310 阅读 · 0 评论 -
【iOS】状态栏颜色和pop手势
说明UINavigationController 管理状态栏颜色,需要转发给单个控制器class NavController: UINavigationController { override func viewDidLoad() { super.viewDidLoad() } override var preferredStatusBarStyle: UIStatusBarStyle { let top = visibleViewCont原创 2020-08-24 17:49:23 · 170 阅读 · 0 评论 -
【iOS】UIScrollview联动
直接上代码class CustomScrollview: UIScrollView { override func hitTest(_ point: CGPoint, with event: UIEvent?) -> UIView? { switch event?.type { case .touches: print("touch") default: return super.hitTest(原创 2020-08-24 17:07:47 · 328 阅读 · 0 评论 -
【iOS】音频系统方法格式转换,获取音频信息获取
直接上代码.h#import <MobileCoreServices/MobileCoreServices.h>#import <AudioToolbox/AudioToolbox.h>#import <AudioUnit/AudioUnit.h>#import <AVFoundation/AVFoundation.h>/// ogg,amr,acc 格式无法使用@interface YSAudioTool : NSObject+ (Au原创 2020-07-28 18:56:29 · 1275 阅读 · 2 评论 -
【iOS/Swift】内存引用计数学习
内存地址获取代码func printAddress(values:AnyObject...){ for value in values { print(Unmanaged.passUnretained(value).toOpaque()) } print("-----------------------------------------")}打印指正地址方法一let tt = {}withUnsafePointer(to: &tt) {pr原创 2020-05-30 21:27:26 · 220 阅读 · 0 评论 -
[iOS] SDK开发
iOS库的区别常见的自建iOS库分为两种形式,一种是xxx.a,还有一种是xxx.framework。这两种库有什么区别呢?.a库只能是静态库,只支持OC/Swift,只能使用静态链接的方式来引入库,调用时需要.h头文件,资源文件通常自建.bundle来管理,也就是最后交付使用的SDK通常包含3个文件,.a文件,.h文件和.bundle文件。.framework可以是静态库或动态库,支持OC和Swift,可以选择静态链接和动态链接的方式来使用库,.framework其实是一个头文件+可执行原创 2020-05-28 15:40:09 · 294 阅读 · 0 评论 -
UIPageViewController
直接上代码class ViewController: UIViewController, UIPageViewControllerDelegate, UIPageViewControllerDataSource, UIScrollViewDelegate { private let page = UIPageViewController(transitionStyle: .scroll...原创 2020-05-08 15:07:55 · 212 阅读 · 0 评论 -
【iOS】Runloop相关
重点记录主线程在创建时候默认有 Runloop 类。其他线程在创建运行时没有 Runloop 类创建的,当在线程中第一次获取 runloop 的时候,自动创建。当线程执行完毕后 Runloop 进入休眠状态,等待下一次的 message 输入后唤醒,并执行 Source。Runloop 的生命周期和线程一致,当线程消亡是,Runloop 也同事消亡。调用入口方法- (void)vi...原创 2020-05-08 15:00:34 · 141 阅读 · 0 评论 -
Swift 线程锁
Locklock() 和 unlock 一定要成对出现try() 判断是否能加锁以下为两个线程移除数组的示例结论:当上锁后只有当 unlock 后线程才会继续执行,保证线程安全。class Test { private let lock = NSLock() private var array: [Int] = [] private lazy var ...原创 2020-04-24 16:56:01 · 2670 阅读 · 0 评论 -
Swift 线程使用
如果感觉不错谢谢点赞。如有问题请写评论,我会尽量及时回复。如果有没有提到的知识点欢迎提出,我会及时补全。三种线程操作Thread: 最轻,灵活度高,可以取消。但是只能有一个传参。Operation: 操作对象+队列,可以取消,可以自己控制操作对象何时结束。Grand Central Dispatch: 调度对象,操作对象, 目前没有找到取消方法。Thread官方文档Thr...原创 2020-04-23 13:38:13 · 1740 阅读 · 0 评论 -
【iOS/OC】runtime
Runtime的特性主要是消息(方法)传递,如果消息(方法)在对象中找不到,就进行转发,具体怎么实现的呢。我们从下面几个方面探寻Runtime的实现机制。Runtime介绍Runtime消息传递Runtime消息转发Runtime应用Runtime介绍Objective-C 扩展了 C 语言,并加入了面向对象特性和 Smalltalk 式的消息传递机制。而这个扩展的核心是一个用 C ...原创 2020-04-19 01:39:02 · 116 阅读 · 0 评论 -
iOS-CLLocationManager定位不准问题
问题:但是实际上,CLLocationManager定位的坐标,在高德地图上标注的位置与实际地点有偏差,并且较大!以前知道不同的地图坐标不能直接通用,但是如我所知,Apple的地图也是基于高德的,为什么CLLocationManager定位出的不准确,而MKMapView的定位却是准确的呢?原因:是这样的,按照国家统一的保密要求,任何一个地图产品都不允许使用GPS坐标,国内地图使用的坐标系统...原创 2020-04-18 13:50:12 · 1604 阅读 · 0 评论 -
iOS创建 cocoapods 公共库
创建的整体思路在github 上创建仓库在 github 上,上传自己的库代码pod spec create YSToast,创建 YSToast.podspec 文件, 并修改里面的相关内容Pod::Spec.new do |spec| spec.name = "YSToast" spec.version = "1.0.0" spec.sum...原创 2020-04-08 16:48:40 · 174 阅读 · 0 评论 -
ios-xcodebuild 的打包使用
使用背景条件Xcode Version 11.4 (11E146)Build version 11E146工程项目为 xxx.workspaceCleanProject命令xcodebuild clean -workspace <workspace_path> -scheme <app_scheme> -configuration <Debug ...原创 2020-04-06 10:25:26 · 689 阅读 · 0 评论