iOS开发
iOS开发入门到精通,分享学习资源以及解决实际遇到的问题。
临海听风V
千里之行,始于足下。
个人网站:www.samuelandkevin.cn
github:https://github.com/samuelandkevin
展开
-
iOS单元测试覆盖率报告导出功能实现
iOS单元测试覆盖率报告导出功能实现原创 2024-05-17 14:45:26 · 216 阅读 · 0 评论 -
iOS-Charts柱状图常用特性
【代码】iOS-Charts柱状图常用特性。原创 2022-12-18 18:26:17 · 897 阅读 · 1 评论 -
iOS-通过preferredStatusBarStyle控制电池栏颜色
其中A是带UINavigationController的一个控制器;B是present出来的一个控制器,坑爹的来了,C又是B push出来的带UINavigationController的一个控制器;而且中间B是overCurrentContext类型的。A、B的状态栏需要是白色的,C是需要黑色的。在info.plist文件添加"View controller-based status bar appearance", 值YES。原创 2022-09-29 10:28:03 · 980 阅读 · 0 评论 -
iOS 组件化-发布组件到远程仓库
最近项目需要组件化,公共组件要推到远程仓库。因为涉及组件是否开源问题,以下发布组件方式会区分私有或者公有仓库推送。原创 2022-09-12 21:14:04 · 875 阅读 · 0 评论 -
在Flutter中使用protobuf (Mac OS环境)
(1)下载protobuf zip包 https://github.com/protocolbuffers/protobuf/releases./configure make make check sudo make install sudo ldconfig检查是否安装成功: protoc --version(2) 安装 protoc_plugindart pub global activate protoc_plugin [版本号]eg:dart pub global acti原创 2022-01-28 17:57:37 · 1967 阅读 · 0 评论 -
iOS-箭头视图绘制
//// ViewController.swift// Draw////import UIKitimport CoreGraphicsclass ViewController: UIViewController { override func viewDidLoad() { super.viewDidLoad() // Do any additional setup after loading the view.原创 2021-11-27 17:42:28 · 866 阅读 · 0 评论 -
CocoaPods安装指定版本、卸载
前提:安装位置:/usr/local/bincocoapods安装:sudo gem install -n /usr/local/bin cocoapodscocoapods安装指定版本:sudo gem install -n /usr/local/bin cocoapods -v 1.10.0cocoapods移除:sudo gem uninstall -n /usr/local/bin cocoapods cocoapods-core cocoapods-deintegrate coc原创 2021-06-13 08:07:43 · 2149 阅读 · 0 评论 -
iOS-CoreData 中date对象数据在数据库的显示
前提条件:使用CoreData问题出现:在iOS开发过程中,假如使用到CoreData,保存时间的对象又用到date对象,当我们查看数据库的时候,发现date对应的秒数不是时间戳,怎么转换也转换不了正确的时间。原因:Core Data的date对象存的时间对象是使用timeIntervalSinceReferenceDate (相对与2001年1月1日)的时间对象解决方法:计算timeIntervalSince1970 与1970年1月1日相差的秒数通过计算得出:timeIntervalSince1原创 2020-12-06 14:48:38 · 482 阅读 · 0 评论 -
iOS-国际化脚本工具
准备条件1.准备环境,python、MacOS2.安装xlrd1.0 官方网址:http://pypi.python.org/pypi/xlrd3.demo,请求参看我的github https://github.com/samuelandkevin/iOS-LocalizeScript操作步骤(1)切换到iOS-LocalizeScript目录下(2)运行脚本:python run.py excel.xlsx(3)运行结果如下:(localize是自动生成的文件夹)其他说明exce原创 2020-10-25 14:04:07 · 1677 阅读 · 0 评论 -
iOS-Swift无限轮播图
import Foundationprotocol EHWelcomeScrollViewDelegate: class { /// 点击第几个 func scrollView(_ scrollView:EHWelcomeScrollView,didSelectIndex:Int) /// 显示下一个 func displayNext(_scrollView:EHWelcomeScrollView) }class EHWelcomeScrollView :原创 2020-06-25 09:05:32 · 504 阅读 · 0 评论 -
iOS-Storyboard入门指南
1 、在工程中创建一个storyboard文件,比如我现在"Authorization.storyboard”这个文件。然后我们可以在storyboard可视化视图中创建多个viewcontroller,navigationcontroller或者Storyboard Reference。如果storyboard中存在比较多VC,关键要找到入口,Storybord Entry Point。举...原创 2020-04-05 12:18:21 · 2405 阅读 · 0 评论 -
iOS-CoreData使用
1.创建文件1-1.新建可视化的dataModel新建文件 -> core data -> Data Model -> .xcdatamodeld (格式)在.xcdatamodeld可视化界面,Add Entity 创建实体。实体,就是跟数据库进行映射的对象。NSManagedObject — 对应数据库中的一条记录。2-2.新建NSManagedObject选...原创 2020-03-28 18:33:40 · 838 阅读 · 0 评论 -
iOS-cocoapods安装、卸载
查看CocoaPods组件安装位置which pod手动移除这个组件sudo rm -rf /usr/bin/pod查看gems中本地程序包gem list安装指定版本sudo gem install -n /usr/local/bin cocoapods -v 1.8.4移除指定版本sudo gem uninstall cocoapods -v 1.9.1参考资料...原创 2020-03-21 12:07:16 · 1373 阅读 · 0 评论 -
iOS-Jenkins常用操作命令
查找jenkins war地址在安装后有可能找不到war包地址,可以用mdfind命令本地查询下mdfind -name jenkins.war/usr/local/Cellar/jenkins/2.116/libexec/jenkins.warjenkins重新安装brew reinstall jenkins常用操作访问:http://localhost:8080/login...原创 2020-03-19 09:40:18 · 404 阅读 · 0 评论 -
iOS-单元测试
iOS进阶之单元测试-视频概念逻辑错误,通过断言XCTAssertEqualTDD,测试驱动开发shift+Command+0(开发者文档)调用顺序:+(void)setUp;-(void)setUp;//把杯子里面的水倒干净,重新进行测试。-(void)testExample;-(void)tearDown;-(void)setUp;-(void)testPerforman...原创 2020-03-18 16:28:55 · 305 阅读 · 0 评论 -
iOS-App Logo和闪屏图尺寸
App Logo20×20pt2x40×40px20×20pt3x60×60px29×29pt2x58×58px29×29pt3x87×87px40×40pt2x80×80px40×40pt3x120×120px60×60pt2x120×120px60×60pt3x180×180px1024×1024pt...原创 2020-03-03 17:10:20 · 1409 阅读 · 0 评论 -
iOS-笔试面试总结
面试题目涉及:(1)大厂会问:算法,数据结构,scoket原理,用过什么框架,编译原理,自己搭建的网络框架(用非官方api) (2)设计模式有哪几种? mvc,mvvm , mvp ,分别介绍一下,runtime作用。 (3)基本的问题:数据库的泛型。json xml 区别。 (4)ARC内存管理机制. (5)AVAudio player (6)RunLoop相关,使用定时器要注意...原创 2019-03-18 08:33:58 · 1698 阅读 · 0 评论 -
iOS- load和initialize 子类,分类,父类,以及同名方法的调用顺序
+ (void)load1.+load方法加载顺序:父类> 子类> 分类 (load方法都会加载)注意:(如果分类中有A,B,顺序要看A,B加入工程中顺序) ,可能结果:( 父类> 子类> 分类A> 分类B ) 或者( 父类> 子类> 分类B> 分类A )2.+load方法不会被覆盖(比如有父类,子类,分类A,分类B,这四个load方法都会...原创 2020-02-19 18:34:30 · 3209 阅读 · 0 评论 -
iOS-SDWebImage实现原理
1、入口 setImageWithURL:placeholderImage:options: 会先把 placeholderImage 显示,然后 SDWebImageManager 根据 URL 开始处理图片。2、进入 SDWebImageManager-downloadWithURL:delegate:options:userInfo:,交给 SDImageCache 从缓存查找图片是否已经...原创 2020-02-19 10:35:55 · 418 阅读 · 0 评论 -
iOS- Mac基于Appium DeskTop的iOS自动化测试环境搭建
1.下载Appium-mac-1.15.1.dmg(本文是用到这版本),链接地址:https://github.com/appium/appium-desktop/releases下载依赖包 brew install carthage brew install node brew install npm npm install -g cnpm --registry=https://reg...原创 2020-02-19 10:03:55 · 820 阅读 · 0 评论 -
HTTP与HTTPS
(1)非对称加密算法理解?私钥加密后的密文,只要是公钥,都可以解密,但是公钥加密后的密文,只有私钥可以解密。私钥只有一个人有,而公钥可以发给所有的人。虽然服务器端向A、B客户端的方向还是不安全的,但是至少A、B客户端向服务器端方向是安全的。如果只使用同样的加密算法,相当于无用。(2)为啥要协商?因为一个服务器和多个客户端需要不同的对称加密算法。HTTPS同时需要对称和非对称加密算法服务...原创 2020-02-15 11:12:58 · 409 阅读 · 0 评论 -
iOS-无痕埋点设计
设计分案设置两个pod组件库,一个负责hook事件,一个负责收集埋点数据,本地持久化,合适时机上传。hook系统的各种事件(UIResponder、UITableView、UICollectionView代理事件、UIControl事件、UITapGestureRecognizers)注意点(1)如何标识一个控件元素:答:利用xpath(以当前的view到系统根元素的所有关键点串联起)(...原创 2020-02-12 11:12:47 · 473 阅读 · 0 评论 -
iOS-完美解决系统键盘联想输入时,字数限制失效问题
1.首先定义一个属性变量///字数限制@property(nonatomic,assign)NSInteger countLimit;///输入框@property(nonatomic,strong)UITextField *tf; 2.在初始化监听UITextField的输入变化通知。[[NSNotificationCenter defaultCenter] addObserve...原创 2020-01-04 17:53:31 · 1307 阅读 · 2 评论 -
iOS笔记-(缓存机制的理解与实现)
提出缓存概念 在生活中,我们经常谈到手机缓存,有不少朋友问为啥我的手机内存少了那么多,可能有不少热心人士回答你的问题,说手机缓存了好多数据,快点清理一下拉,于是你马上下载手机卫士,360,qq安全管家之类的APP去清理。那么缓存到底是何方神圣呢,它跟PC端的缓存一样吗?于是,小编在网上搜索了不少资料,最后还要感谢MJ老师的指导,此时突发灵感,整理一下笔记,写一下我对缓存的理解。如有错原创 2015-04-25 20:35:25 · 4673 阅读 · 0 评论 -
iOS笔记-(网络编程之网络请求步骤)
/* 一. 网络请求的步骤 1. 确定地址NSURL 2. 建立请求NSURLRequest 3. 建立并启动连接NSURLConnection 4. 通过代理方法处理网络请求 遵守协议: 二. 网络代理方法 1. 接收到服务器的响应,服务器要传数据,客户端做接收准备 2. 接收服务器传输的数据,可能会多次执行 3. 接收数据完成,做后续处理转载 2015-03-11 10:38:10 · 556 阅读 · 0 评论 -
iOS笔记-(ASI缓存常用方法总结)
//判断现在是否有网络请求在处理中 [ASIHTTPRequest isNetworkInUse];//当正在请求时,状态栏是否要显示联网状态(转圈圈) [ASIHTTPRequest setShouldUpdateNetworkActivityIndicator:YES]; 一.ASI缓存策略(1)缓存策略:什么时候进行缓存,缓存数据的利用方式原创 2015-07-03 15:42:10 · 1243 阅读 · 0 评论 -
iOS笔记-(Block基础知识和使用)
基础知识:1)block声明,block创建,block调用。//block声明int (^myBlock)(int);//block创建myBlock = ^(int a){int result = a*a;return c;};//block调用myBlock(10);2)声明一个block参数 (void)objectMethod:(int (原创 2015-03-15 21:28:04 · 440 阅读 · 0 评论 -
iOS笔记 -(NSDictionary和NSMutableDictionary常用方法总结)
NSLog(@"-------------NSDictionary-------------"); //1.创建字典 NSDictionary *dict1 = [NSDictionary dictionaryWithObjectsAndKeys:@"小明",@"name",@"11",@"number",@(100),@"score",nil]; NSDictionary原创 2015-07-26 14:17:21 · 789 阅读 · 0 评论 -
iOS笔记-(利用EGORefreshTableHeaderView自定义上拉加载和下拉刷新)
GIthub下载一个DEMO,在RootviewController中查看.UIScrollViewDelegate:是监听滑动的距离EGORefreshTableHeaderDelegate:是头部控件的代理方法.//1.下拉到一定距离,手指放开会触发:(void)egoRefreshTableHeaderDidTriggerRefresh:(EGORefreshTableHeader原创 2015-08-02 21:00:57 · 818 阅读 · 0 评论 -
iOS笔记-(Block的理解)
//1.block变量的声明 //格式:返回值(变量)(参数...) // eg:int(^myBlock)(int,int); //2.block变量的创建 //eg:myBlock = ^(int a,int b){ // return a+b; // }; /***没有使用原创 2015-08-23 11:17:17 · 577 阅读 · 0 评论 -
iOS、mac开源项目及库(转载)
目录UI下拉刷新模糊效果AutoLayout富文本图表表相关隐藏与显示HUD与Toast对话框其他UI动画侧滑与右滑返回手势其他动画网络相关网络连接网络测试图像获取网络聊天网络测试Model其他数据库缓存处理PDF图像浏览及处理摄像照相视频音频处理响应式框架消息相关消息推送客户端消息推送服务器端通知相关版本新API的Demo代码安全与密码测试转载 2015-12-23 12:26:27 · 1308 阅读 · 0 评论 -
iOS笔记-runtime objc_msgSend
runtime是怎么发消息的?原创 2016-03-24 22:02:27 · 447 阅读 · 0 评论 -
ios笔记-runtime Method详解
Runtime Method 介绍:Method类型是一个objc_method结构体指针,objc_method有三个成员typedef struct objc_method Method;struct objc_method{SEL method_name; //方法的名称char *method_typesE;//参数和返回类型的描述字串IMP method_imp;原创 2016-03-25 13:24:02 · 1708 阅读 · 0 评论 -
iOS笔记-归档和解档
//(1)第一种方式:归档 (缺点:一个对象保存为一个文件) NSArray *arrayArchi = @[@"1",@"2",@"3"]; NSString *pathArchi1 = [NSHomeDirectory() stringByAppendingPathComponent:@"archive1"]; BOOL isOK1 = [NSKeyedArchiver原创 2016-03-20 22:00:47 · 386 阅读 · 0 评论 -
iOS笔试面试问题总结
最近,面试几间公司,对一些常见笔试面试问题作一次总结. 1.内存管理,必问.autoreleaspool的作用和理解,怎么知道对象已经释放?对象作用域结束是在什么时候? retain,copy,assign的区别,如果对象的属性@property是数组用retain,是否正确,为什么? 2.谈谈你对runtime的看法 3.你项目中有用到runloop吗原创 2016-03-26 14:32:16 · 457 阅读 · 0 评论 -
iphone真机调试时出现 could not find developer disk image问题
因为你的手机系统版本比XCode的最高支持系统还要高,要么更新XCode,要么去换一台支持XCode编译的最高系统的iPhone.原创 2016-03-27 19:42:34 · 341 阅读 · 0 评论 -
iOS-在xib上AutoLayout加载控件时init,layoutsubviews,initWithCoder,awakeFromNib.
在xib上AutoLayout加载控件,init,layoutsubviews,initWithCoder,awakeFromNib顺序是怎么样的.发现xib加载控件顺序是:(1)- (instancetype)initWithCoder:(NSCoder *)aDecoder; //控件本身的宽高还没自动布局(2)- (void)awakeFromNib;//控件本身的宽高还没自原创 2016-04-14 23:19:31 · 1767 阅读 · 0 评论 -
iOS二维码生成中间带图片Logo
iOS二维码生成中间带图片Logo原创 2016-04-18 16:05:29 · 6031 阅读 · 0 评论 -
iOS 浅谈dispatch_set_target_queue作用
dispatch_set_target_queue的两个作用: 用来给新建的queue设置优先级:dispatch_queue_t serialQueue = dispatch_queue_create("com.oukavip.www",NULL); dispatch_queue_t globalQueue = dispatch_get_global_qu转载 2016-04-19 10:14:37 · 777 阅读 · 0 评论 -
iOS 6.0+ Autolayout — UITableViewCell 高度调整
针对ios 6.0+ 使用autolayout 来布局,需要注意的地方很多。autolayout ios6 ios7 ios8目录[-]要实现的效果要求:storyboard上的准备工作 建好cell自定义AutoCell 类,关联好控件,事先准备好一些数据源实现tableview的委托方法核心部分,HeightForRow方法实现具体的转载 2016-04-19 17:20:44 · 531 阅读 · 0 评论