Mac OS系统系统环境变量 目前苹果系统的更新,设置环境变量也有所变化,新版本的macOS Catalina开始,新用户的默认shell改为了zsh查看默认shell echo $SHELL如果是/bin/bashvim ~/.bash_profile编辑内容source ~/.bash_profile如果是/bin/zshsource ~/.zshrc编辑内容source ~/.zshrc...
使用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
类似今日头条的滑动标题,滚动标题 类似今日头条的滑动标题pod 'LCCPageView'//import LCCPageView fileprivate func setupUI() {// let titles = ["你好","爱上","颠覆","颠信"] let titles = ["你好","阿双方就开始","阿瑟","阿斯顿发","时代","你好","阿双方就开始","阿瑟","阿斯顿发"] let config = PageTitleConfig
IOS 关于锁 前言为什么需要锁:多条线程存在同时操作(删、查、读、写)同一个文件or对象or变量。如果不是同时或者不是同一个那就不用加锁了。关键变量:必须是“同时”,“同一事物”自旋锁OSSpinLock个人理解:就是一直等,忙等,一直while 到锁被解开,自旋锁不会让等待的线程进入休眠状态已经废弃,容易出现优先级反转关于优先级反转:现在有2个高优先级线程A,一个低优先级线程B情况1:A先获得锁,执行A线程的任务,然后B获取锁,执行B的任务。正常情况2:B先获得锁,因为B是低优先级线程,这个时候系统
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对象
Lable描边 override func drawText(in rect: CGRect) { // 1.获取上下文 let context = UIGraphicsGetCurrentContext() // 2.给上下文线段设置一个宽度, 通过该宽度画出文本 context?.setLineWidth(5) context?.setLineJoin(.round) context?.setTextDra
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
粒子动画,做礼物,雪花等特效 extension Emitterable where Self : UIViewController { func start() { // 1.创建发射器 let emitter = CAEmitterLayer() // 2.设置发射器的位置 emitter.emitterPosition = CGPoint(x: view.bounds.width * 0.5, y: -60) .
一种使用协议代替NSNotificationCenter 的方案 写在前面关于NSNotificationCenter 大家并不陌生,今天我们就来简单的聊聊。NSNotificationCenter and Delegate 都是可以做到通知去做某事,NSNotificationCenter 可以通知多个,Delegate 只能通知一个。这是Notification的优点,但同时也是它的缺点。在多人合作的项目中,我们经常会出现一些尴尬的情况,发出一个通知后,数据就被其他类监听,然后数据就被莫名其妙的修改了,这种问题如果开始没有想到是通知的锅,就很难排查了发出通知
AWSS3文件断点下载,分片上传,断点续传 LCCFileService支持断点续传支持断点下载大文件分片上传最大同时上传,下载队列可控上传,下载,进度多种方式监听可以自定义下下载,上传器(目前是封装的亚马逊AWSS3)秒传,秒下载(通过MD5和FileKey,判定文件是否已经上传或者下载,如果是,直接进行copy 操作)pod 'LCCFileService'github地址上传第一步:添加下载器 _netService = [[LCFileNetService alloc] init]; [_netService
获取手机的IP地址 swift/// 获取本地IP 地址,可能是局域网的地址 @objc public static func getIphoneIpAddress() -> String{ var addresses = [String]() var ifaddr : UnsafeMutablePointer<ifaddrs>? = nil if getifaddrs(&ifaddr) == 0 { var ptr =
自定义组件化Pod资源加载 第一步:添加资源将资源放到LCCChinaIP/Assets目录文件下,我这里添加的资源为IPSource.bundle我的工程叫:LCCChinaIP,通过pod lib create LCCChinaIP 会自动生成这样的一个文件夹第一步:配置podspec s.resource_bundles = { 'LCCChinaIP' => ['LCCChinaIP/Assets/*'] }这样的配置会在安装包理自动生成一个LCCChinaIP.bundle 资源包,里面就
关于OC+Swift 混编的单元测试的配置 https://medium.com/if-let-swift-programming/ios-tests-working-with-objective-c-and-swift-class-together-aaf40f91a27c
iOS苹果原生系统推送通知 准备工作下载推送测试程序SmartPush ,并用xcode 运行安装创建工程对应的推送证书,一个是Apple Push Notification service SSL (Sandbox) 和Apple Push Notification service SSL (Sandbox & Production),前者只能给开发者用Xcode安装的app推送,后者可以给所有app推送开发获取权限并申请device token- (void)notification:(UIApplica