- 博客(32)
- 收藏
- 关注
原创 mac M1 pod install指令
第一步:首先安装、配置和使用 zsh。如果你用 Mac,就可以直接看下一节如果你用 Redhat Linux,执行:sudo yum install zsh如果你用 Ubuntu Linux,执行:sudo apt-get install zsh如果你用 Windows……去洗洗睡吧。安装完成后设置当前用户使用 zsh:chsh -s /bin/zsh,根据提示输入当前用户的密码就可以了。第二步:1.安装pod库: sudo arch -x86_64 gem install ffi 2.需要在zsh环
2022-06-17 12:10:41
1300
原创 iOS [NSURL URLWithString:url]中文返回nil问题
在使用[NSURL URLWithString:url]⽣成NSURL时,如果url字符串含有中⽂时,会导致返回的NSURL为nil。解决方案:利用runtime添加NSURL扩展。其中stringByAddingPercentEncodingWithAllowedCharacters 对URL字符串百分号编码。...
2022-06-09 16:20:07
1581
转载 cocoapod更新问题 国内支持库为https://gems.ruby-china.com/
一、首先查看一下自己的ruby,看是不是https://gems.ruby-china.com/gem sources -l二、如果不是https://gems.ruby-china.com/的源的话,就添加新源,卸载旧源;gem sources --add https://gems.ruby-china.com/--remove https://gems.ruby-chin...
2019-11-16 10:44:10
755
转载 sqilte 语句
1、创建表格CREATE TABLE IF NOT EXISTS AccountTable ('id' INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,accountID TEXT ,password TEXT )2、Sqlit 里查询获取N条数据查询条件 whereSql 按somthingelse 降序排序 取从第 0条开始后的N条数据 ...
2019-10-22 15:54:26
324
原创 runtime 实现方法交换 viewwillappear方法
面试题:在程序中方法实现只执行一次,利用runtime方法交换重写viewwillappear。1、新建分类#import "UIViewController+swizzling.h"#import <objc/runtime.h>@implementation UIViewController (swizzling)//load方法会在类第一次加载的时候被调用...
2019-09-18 17:30:21
514
原创 Swift 闭包(block)详解
1、闭包Swift对闭包进行了简化:利用上下文推断参数和返回值类型 隐式返回单表达式闭包,即单表达式闭包可以省略return关键字 参数名称缩写 尾随(Trailing)闭包语法先来看一个排序的例子,数组的降序排列let usernames = ["Wangwu", "Lisi", "Xiaoming", "Zhangsan"]func backWards(s1: Stri...
2019-09-18 11:33:23
7891
原创 iOS 如何捕获异常?
在AppDelegate.m 文件app启动时(didFinishLaunchingWithOptions),添加一个异常捕获的监听- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { // Override po...
2019-09-18 11:32:54
336
转载 iOS 优化你是从哪几方面着手
一、首页启动速度1、启动过程中做的事情越少越好(尽可能将多个接口合并)2、不在UI线程上作耗时的操作(数据的处理在子线程进行,处理完通知主线程刷新节目)3、在合适的时机开始后台任务(例如在用户指引节目就可以开始准备加载的数据)二、页面浏览速度1、json的处理(iOS 自带的NSJSONSerialization,Jsonkit,SBJson)2、数据的分页(后端数据多的话,就要分页返...
2019-09-18 11:25:35
293
原创 Object-c 中结构体与类
一、概念1、结构体(struct)是由一系列具有相同类型或不同类型的数据构成的数据集合,叫做结构。2、类对象是一种数据结构,存储类的基本信息:类大小,类名称,类的版本,继承层次,以及消息与函数的映射表等二、内存分布结构体只能封装属性,类不仅可以封装属性也可以封装方法。 结构体变量分配在栈,而类的实例分配在堆,虽然栈的空间相对于堆来说是比较小的,但是存储在栈中的数据访问效率相对高于...
2019-09-16 18:28:38
403
原创 NSString用copy和strong的区别
NSString为不可变字符串,用copy和strong都是只分配一次内存。1、但是如果用copy,需要先判断字符串是不是不可变字符串,如果是不可变字符串,就不在分配空间,如果是可变字符串才分配空间。2、如果程序中用到NSString比较多,每次都先判断会耗费性能,用strong则不会再判断了,所以不可变字符串可以直接用strong修饰。...
2019-09-11 20:34:08
478
原创 数据库多表查询关联查询SQL语句
LEFTJOIN ON关键字会从左表那里返回所有的行,即使在右表中没有匹配的行。意思就是向左关联某个表记录,以左边的那个表的记录为基准,通过关联条件,将关联表的相关符合要求的记录一起找出来,找出来的记录条数就是左边表的记录数具体用法如下:SELECT column_name(s) FROM table_name1 LEFTJOINtable_name2ONtable_na...
2019-09-11 20:19:13
14442
2
原创 xcode编译时报unrecognized selector的异常
当调用对象上某个方法,而该对象上没有实现这个方法的时候,可以通过“消息转发”进行解决。objc在向一个对象发送消息时,runtime会根据对象的isa指针找到该对象实际所属的类,然后在该类中的方法列表以及其父类方法列表中寻找方法运行。如果在最底层的父类中依然找不到相应的方法时,程序在运行时会挂掉并抛出异常unrecognized selector sent to xxx。但是在这之前,objc...
2019-09-10 17:40:22
509
原创 快速给UIView添加单边或多边圆角
可以CAShapeLayer来设定UIView.layer.mask 来实现圆角主要参数:public struct UIRectCorner : OptionSet { public init(rawValue: UInt) public static var topLeft: UIRectCorner { get } public static var ...
2019-09-04 16:42:22
820
原创 Carthage集成工具使用
Carthage和CocoaPods相比,轻量级一些,在swift中使用很方便,它本身就是swift写的。Carthage旨在成为向Cocoa应用程序添加框架的最简单方法。1、安装brew /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"...
2019-08-02 11:33:40
457
原创 斐波那契(fibonacci)数列模块
定义斐波那契数列是一系列数字,除了第一个和第二个数字之外,任何数字都是前两个数字之和: 0、1、1、2、3、5、8、13、21...... 数列中的第一个斐波那契数的值为0,第四个斐波那契数为2,第n个斐波那契数的值可以通过下述公式计算: fib(n) = fib(n-1) + fib(n-2)swift迭代计算:/** prev与curr分别代表f(n-1)和f(n)*...
2019-07-30 12:00:41
546
原创 Runtime在Swift中的用法
Runtime是什么?运行时(Runtime)是指将数据类型的确定由编译时推迟到了运行时 Runtime是一套比较底层的纯C语言API, 属于1个C语言库, 包含了很多底层的C语言API 平时编写的OC代码,在程序运行过程中,其实最终会转换成Runtime的C语言代码,Runtime是Object-C的幕后工作者 Object-C需要Runtime来创建类和对象,进行消息发送和转发Ru...
2019-07-24 15:34:02
1631
原创 textfield靠右编辑不显示空格的bug
用iOS原生的textField文本靠右编辑,不显示空格的bug。self.textField.textAlignment = .right,即设置NSTextAlignmentRight时就会有显示问题解决思路解决思路很简单,就是将我们输入的普通空格使用Non-breaking space代替。1.首先设置控制器作为textfield的代理self.textField.dele...
2019-07-23 12:39:53
1503
原创 iOS 字符串转ascii码,字符串转NSData
在xcode中,文件以utf8格式保存。因此,其中变量对象也是以utf8格式保存。不同语言的utf8编码不一样,不同语言的每个字符的utf8编码的字节数不一样,字节码也不一样。但是英文的utf8编码和ascii码一样,对于英文字符,查看它的ascii码,将字符取出来,就是它的ascii码。使用英文转换测试,如下所示:// NSString to ASCIINSString *st...
2019-07-08 11:38:30
4513
1
原创 KVO编码(swift )
KVO,即:Key-Value Observing,它提供一种机制,当指定的对象的属性被修改后,则对象就会接受收到通知。简单的说就是每次指定的被观察的对象的属性被修改后,KVO就会自动通知相应的观察者了。对于夸界面修改实例属性的,我们会利用到kvo来监听值变化,并显示在界面上,去除NotificationCenter通知的臃肿代码和阅读障碍。使用kvo时,注意在界面销毁,移除监听,把指针置...
2019-07-05 17:41:45
163
原创 iOS 蓝牙进入后台仍保活
相信大家在开发蓝牙应用的过程中会遇到需要连接蓝牙获取实时数据,然而我们不可能让应用一直保持在前台运行,所以需要设置权限让APP进入后台还继续运行蓝牙模块。1、首先我们会想到xcode的设置,如下图2、然而这样设置了,APP进入后台后,如果蓝牙连接着就会一直通讯,如果没有通讯,系统也会将进程挂起,所以需要进行心跳包,保证数据通讯不断。但假如进入后台后蓝牙断开了,APP就被挂起来了,所...
2019-06-17 12:00:41
4616
9
原创 swift 音乐播放单例
遇到需要播放闹钟,警告铃的需求时,需要封装一个播放音乐的单例,以下是单例代码://// AlertSoundPlayer.swift// Sleep//// Created by haitao on 15/11/27.// Copyright © 2015年 广州. All rights reserved.//import UIKitimport AVFoundat...
2019-06-14 17:56:23
569
原创 iOS日志打印存贮到txt文件及沙盒文件操作
在我们开发中过程中有时候会有这样的场景,需要脱离连线调试代码,但是又看不见控制台的Log,所以将Log存到文本中,调试过程全部记录下来,随时可以看。存贮:class func logWithTag(_ tag:String){ if logMode { print(tag) //将数据写入log中, ...
2019-01-10 17:40:12
1078
原创 ios 跳转应用设置
let url = URL(string: UIApplicationOpenSettingsURLString)UIApplication.shared.openURL(url!)直接打开app的设置权限管理。跳转到电话界面let jumpURL = URL.init(string: "tel:110")UIApplication.shared.openURL(ju...
2019-01-03 10:56:59
499
原创 上架App Store出现x86_64, i386 架构错误
更新:最近又要上架,发现即使有了下面的脚本,但是使用xcode模拟器调试过,又报错。解决办法:必须重新把工程编译缓存清空,操作如下:Product ->clean,按住Alt变成 cleanbuild Folder...,等待操作完成,把自定义、第三方framework剔除掉x86_64, i386这两个架构的模拟设备缓存,再重新打包上传。------------------...
2018-09-30 12:54:07
1905
原创 swift 防止push多次界面
场景:快速多次点击cell跳转到另一个页面,另一个页面被push多次。原因:push后的页面有耗时操作或者刚好push到另一个页面时,另一个页面正好在reloadData卡住主线程。造成点击cell时卡住了。解决方法:重写导航控制器的push方法// BaseNavigationViewController.swiftimport UIKitclass BaseNavig...
2018-09-27 15:53:16
1005
原创 iOS-Pods-DFU-Library项目从xcode9.2升级到xcode9.4或者版本更高时的解决方案
这里主要参考这个项目:iOS-nRF-Toolbox,它是Nordic公司开发的测试工程,包含一整套nRF设备的测试解决方案。国内的蓝牙开发商使用比较多的硬件还是Nordic公司的芯片,所以OTA升级免不了需要使用该公司的framework.我们引用库:import CoreBluetooth,import iOSDFULibrary,这里的iOSDFULibrary就是DFU升级的库...
2018-09-18 11:32:09
890
原创 XCode编译时出现(dyld): Library not loaded: 错误解决方法
编译时出现错误现象:dyld: Library not loaded: @rpath/DFULibrary.framework/DFULibrary Referenced from: /private/var/mobile/Containers/Bundle/Application/F33A206D-59CF-4ECE-96F4-3814818A09E3/nRF Toolbox.a...
2018-09-18 11:08:51
6418
2
原创 swift 实现gif播放
图片路径在沙盒中: let filepath = NSHomeDirectory() + "/Documents/launchGif.gif" self.launchImage.ht_startGifWithFilePath(filePath: filepath)图片放在工程中:self.launchImage.ht_startGifWithImageName(name: "l...
2018-09-10 17:02:42
1075
原创 swift 日期比较
//1、一个小时内: xx分钟前 //2、今天之内 HH:mm //3、今年之内: MM-dd HH:mm //4、其他年份: yy-MM-ddfunc compareForNowWith(_ date: Date) -> String { // switch NSDate to String ...
2018-09-10 16:51:24
1705
原创 swift 计算两个日期相差几天
业务上需要计算两个日期相差几天,来显示上一次操作时间过去多久。官方为我们提供了NSCalendar类,来管理时间。天的参数是:NSCalendar.Unit.day如果计算相差的小时数,可改为NSCalendar.Unit.hour; day改为hour。 // MARK: - 计算两日期间相差的天数 /**计算两日期间相差的天数*/ class func di...
2018-09-10 16:39:18
1501
原创 swift 对json数组根据时间排序
//dataArray:[OperationMaintenanceObject] 对象数组 funcresponsDeal(dataArray:[OperationMaintenanceObject]){ //可变集合 letoperationSet =NSMutableSet() //遍历数组加进集合 fo...
2018-09-05 11:05:24
1501
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人