- 博客(145)
- 资源 (1)
- 收藏
- 关注
原创 GitHub上史上最全的iOS开源项目分类汇总
github上比较好用的第三方Category/Util sstoolkit一套Category类型的库,附带很多自定义控件 功能不错~ BFKit又一套Category类型的 Kit,还有几个工具类 APUtils
2017-07-06 18:44:37 3495
原创 时间与日期处理
主要有以下类: NSDate -- 表示一个绝对的时间点NSTimeZone -- 时区信息NSLocale -- 本地化信息NSDateComponents -- 一个封装了具体年月日、时秒分、周、季度等的类NSCalendar -- 日历类,它提供了大部分的日期计算接口,并且允许您在NSDate和NSDateComponents之间转换NSDateFormatter -
2017-06-23 10:21:23 2430
原创 申请企业型开发者账号流程(申请企业开发者账号的时候类型选择Company/Organization为什么会变成公司型账号)
要去下面这个网址,重点是点击进去选择申请Type的时候,必须是从两个选项中选择Company而不是从三个选项中选择Company,现在那个客服已经给我发邮件告诉我正在跟进开发者计划的申请....https://developer.apple.com/programs/enterprise/enroll/
2017-03-27 18:09:04 3656
原创 iOS开发之修改已有项目的项目名和类名前缀
如果包含Tests和UITests文件的,需要打开项目找到.m文件,文件名修改和文件中代码全局查找替换。最简洁方便的方法直接创建一个.text文本,把下面的代码复制进去,然后把后缀改成.py即可。运行项目,如果没有问题,万事大吉,直接收工。打开 xcode 将红色(或灰色)部分文件删除,并将改名后的文件导入工程,“到目前修改项目名称已经全部搞定,确定运行没问题 ,very good!直接选中项目,点击enter,直接修改项目名称。方法,如果使用python3,则要替换为。然后修改对应的文件夹名称为。
2024-11-27 14:15:27 987
原创 iOS之如何创建.a静态库
①、打开 Xcode 并创建一个新的 Xcode 项目。②、选择 "macOS" -> "Framework & Library" -> "Cocoa Touch Static Library"。③、命名你的项目,例如 "StaticLibrary"。④、选择合适的语言 (Swift 或 Objective-C)。
2024-06-24 11:30:59 1449
原创 深入理解RunLoop
RunLoop 是 iOS 和 OSX 开发中非常基础的一个概念,这篇文章将从 CFRunLoop 的源码入手,介绍 RunLoop 的概念以及底层实现原理。之后会介绍一下在 iOS 中,苹果是如何利用 RunLoop 实现自动释放池、延迟回调、触摸事件、屏幕刷新等功能的。
2024-06-20 11:05:16 1190
原创 那些年你用过的iOS开发工具
从苹果发明 iPhone 起,AppStore 上的一个又一个类似 flappy bird 的一夜暴富的故事刺激着大量开发者加入移动开发大军。随着这些开发者出现的,还有大量方便 iOS 开发者的各种工具。这些工具作为整个应用开发生态链的重要一环,极大地方便了广大应用开发者,节省了应用开发的时间。本文将从应用工具、命令行工具、插件工具 3 个方面,介绍这些优秀的应用。本文分图形应用工具,命令行工具,Xcode 插件三个部分,介绍了 iOS 开发中好用的工具。
2024-06-18 11:00:53 935
原创 iOS开发工具-网络封包分析工具Charles
Charles是在 Mac 下常用的网络封包截取工具,在做移动开发时,我们为了调试与服务器端的网络通讯协议,常常需要截取网络封包来分析。Charles 通过将自己设置成系统的网络访问代理服务器,使得所有的网络访问请求都通过它来完成,从而实现了网络封包的截取和分析。除了在做移动开发中调试端口外,Charles 也可以用于分析第三方应用的通讯协议。配合 Charles 的 SSL 功能,Charles 还可以分析 Https 协议。
2024-06-18 10:53:22 946
原创 IOS---多个网络请求如何控制回调顺序以及所有网络请求执行完后执行下一步
开发需求:1、原型是多个网络请求不做任何处理2、多个网络请求,需要所有网络请求都完成后才能进行下一步的操作。如下载多个图片,下载完了才能展示。3、多个网络请求,在2情况下还要求所有的网络请求必须回调也按顺序回调。 实测首先在viewDidLoad创建一个按钮 点击的时候做网络请求- (void)viewDidLoad { [super viewDidL...
2019-02-21 17:43:11 5371 1
原创 IOS-------内存优化
造成内存问题的最大可能:1、野指针:报EXC_BAD_ACCESS(很大的可能性是野指针造成的,可在edit scheme里打开诊断的僵尸模式,获得更多崩溃信息)weak和assign都是弱引用声明类型,最大的区别是什么呢?1)、weak声明的变量释放后自动清空,赋值为nil。2)、assign声明的变量释放后不会自动赋值为nil,而且会造成野指针错误。2、循环引用3、bl...
2019-01-31 15:34:00 332
原创 IOS---------Controller瘦身二:面向协议编程MVP模式,对M和V进行解耦
前言: 续上一篇https://blog.csdn.net/qq_33226881/article/details/86635136写如何封装UITableView的数据源和代理源以达到对C瘦身以及解耦目的后,又一篇对C瘦身以及解耦的文章,大家可整合两篇进行使用,基本可以使C变得好看很多,不显得辣么臃肿。 MVP设计模式:1、数据请求放于M里面2、新增一个modelPresen...
2019-01-31 11:32:49 1091 1
原创 IOS---------Controller瘦身一:剥离UITableView,封装dataSource和deleagte。
MVC在讨论解耦之前,我们要弄明白 MVC 的核心:控制器(以下简称 C)负责模型(以下简称 M)和视图(以下简称 V)的交互。这里所说的 M,通常不是一个单独的类,很多情况下它是由多个类构成的一个层。最上层的通常是以 Model结尾的类,它直接被 C 持有。Model类还可以持有两个对象:Item:它是实际存储数据的对象。它可以理解为一个字典,和 V 中的属性一一对应 Cache:...
2019-01-24 23:58:03 2062
原创 IOS----xcode与git的那些事
1、xcode关联git,新项目通过xcode上传到git上去(1)、xcode创建一个空项目(2)、Git上面创建一个新项目(常见免费的git远程仓库有码云或是github)(3)、通过终端,执行git clone https:xxxxxxxxxxx-iOS.git ,导下项目(4)、将xcode创建的项目文件,拷贝到git下来的文件内(5)、用xcode代开git文件夹的....
2018-11-25 16:22:08 715
原创 IOS---原子属性atomic和非原子属性nonatomic
一:原子属性和非原子属性1. OC在定义属性时有nonatomic和atomic两种选择,默认为atomic属性atomic:原子属性,为setter方法加自旋锁(即为单写多读)nonatomic:非原子属性,不会为setter方法加锁。 2. nonatomic和atomic的对比atomic:线程安全,需要消耗大量的资源;nonatomic:非线程安全,适合内存小的...
2018-10-28 16:21:33 1449
原创 iOS--------如何在ios中运用core animation暂停和继续动画
核心代码如下//暂停layer上面的动画- (void)pauseLayer:(CALayer*)layer{ CFTimeInterval pausedTime = [layer convertTime:CACurrentMediaTime() fromLayer:nil]; layer.speed = 0.0; layer.timeOffset = pau...
2018-09-06 09:54:06 430
原创 iOS-----initializer element is not a compile-time constant
初始化一个全局变量或static变量时,只能用常量赋值,不能用变量赋值!如下就会报这个错误:(KUIScreenWidth)是变量static CGFloat const topButtonWidth = kUIScreenWidth/2.0;...
2018-09-06 09:52:14 2687
原创 iOS----在子视图中获取父视图的控制器
在实际项目当中,我们经常会遇到需要在一个父类为UIView的子视图上进行POP或是PUSH操作,但该子视图是不能用POP或PUSH的,这时候我们就可以根据该子视图获取到父视图的控制器,从而进行POP或PUSH,具体方法如下:/** * 获取父视图的控制器 * * @return 父视图的控制器 */- (UIViewController *)XC_GetViewControll...
2018-09-06 09:44:24 1713
原创 iOS开发中variable is not assignable missing block的解决办法
如下图所示,当我们在block代码块中使用局部变量时,就会很容易出现如图的错误: 意思是:变量是不可转让的缺块。 因为局部变量在block内部是readonly(只读的)其实,我们只需在变量声明时加上static关键字就可以了,如图所示: 或是变量前加上__bl...
2018-09-06 09:37:42 582
原创 iOS----@dynamic
一、@dynamic与@synthesize的区别@property有两个对应的词,一个是@synthesize,一个是@dynamic。如果@synthesize和@dynamic都没写,那么默认的就是@syntheszie var = _var; @synthesize的语义是如果你没有手动实现setter方法和getter方法,那么编译器会自动为你加上这两个方法。 @dy...
2018-08-19 16:44:43 2368
原创 iOS-如何正确使用const,static,extern
一、const与宏的区别(面试题):const简介:之前常用的字符串常量,一般是抽成宏,但是苹果不推荐我们抽成宏,推荐我们使用const常量。编译时刻:宏是预编译(编译之前处理),const是编译阶段。 编译检查:宏不做检查,不会报编译错误,只是替换,const会编译检查,会报编译错误。 宏的好处:宏能定义一些函数,方法。 const不能。 宏的坏处:使用大量宏,容易造成编译时间久,...
2018-08-19 16:43:04 801
原创 IOS-内存泄漏检测工具Instruments中的Leaks
Instruments 的介绍: Instruments 是一个很灵活的、强大的工具;是性能分析、动态跟踪 和分析OS X 以及iOS代码的测试工具;用它可以极为方便收集关于一个或多个系统进程的性能和行为的数据,并能及时随着时间跟踪而产生的数据,并检查所收集的数据,还可以广泛收集不同类型的数据;也可以追踪程序运行的过程,这样instrument就可以帮助我们了解用户的应用程序和操作系统...
2018-06-06 00:06:09 5317
原创 iOS 判断字符串中含有某个字符串
//判断字符串是否包含“iOS”方式一:containString查找字符串是否包含“ iOS ”,适用于IOS8及以上,以下的系统会因为没有此API而报错。NSString*str = @“我是 iOS 开发工程师”;if([str containsString:@"iOS"]) { NSLog(@"字符串包含“ iOS”");}方式二:rangeOfString查...
2017-12-16 14:31:53 3463
原创 iOS使用MBProgressHUD出现的坑
问题一:(“MBProgressHUD needs to be accessed on the main thread.”)我用webView加载H5页面,并在webViewDelegate方法中使用MBProgressHUD控件,如下:-(void)webViewDidStartLoad:(UIWebView *)webView [self showLoadHUDMsg:@"正在加
2017-12-16 14:26:24 978
原创 上传AppStore出现 ERROR ITMS-90474,ERROR ITMS-90475错误
在使用Xcode 上传AppStore时候发现ERROR ITMS-90474,ERROR ITMS-90475等错误。ERROR ITMS-90474: “Invalid Bundle. iPad Multitasking support requires these orientations: ‘UIInterfaceOrientationPortrait,UIInte
2017-12-16 14:14:23 700
原创 iOS开发之QQ, 在APP中打开指定qq聊天界面的方法
1. 电商,最害怕的事情就是与用户失联了。 所以即时通讯是非常重要的。 2. 微信, 现在微信已经把外部打开微信的方式全部禁用了,所以 打开是不可能的,微信只能通过加好友,才能与你的客服进行聊天3. QQ, 从外部打开指定QQ的聊天界面,是可以的,通过网页的方式。详细代码如下//在这里放QQ号NSString *qqNumber = @"2158015525";NSString
2017-12-16 14:11:20 1736
原创 reason: '-[__NSCFNumber length]: unrecognized selector sent to instance 0x1c0424640'
出现这种报错很大的原因是因为类型给错了,或许你这个数据是从json上解析后得到的,但是需要看一下这个数据是NSString还是NSNumber类型,如果是NSNumber类型的话,你又直接使用NSString类型的变量去接收他,那么肯定会报这样的错误,所以一定要注意数据的类型最常见的就是:json解析后拿到一个值后不知道后台传回的是什么类型,就类似说再[NSString str
2017-12-16 14:09:17 881
原创 iOS开发中variable is not assignable missing block的解决办法
如下图所示,当我们在block代码块中使用局部变量时,就会很容易出现如图的错误: 意思是:变量是不可转让的缺块。 其实,我们只需在变量声明时加上static关键字就可以了,如图所示:
2017-11-21 16:21:10 19128
原创 iOS开发:发短信、发邮件、打电话及摇一摇实现
简介在iOS开发中,可能会用到发短信、发邮件、打电话及摇一摇等功能,比如在应用程序的‘关于’界面,我们可能会留下电话号码或邮箱等联系方式,为了方便用户直接在应用程序中做操作,提升用户体验,我们会设计一些交互动作,让用户轻松的去发短信、打电话或发邮件等。如下我将简单介绍几种功能的具体实现方法。需要注意的是,如下功能的实现必须通过真机调试,模拟器暂不支持如上功能。打电话meth
2017-11-18 15:48:22 908
原创 iOS程序进入后台后仍运行定时器NSTimer
iOS 允许的几种后台几种后台存活的模式 ios7之后(一个app可以混合调用多种模式):Background Audio、VoIP、Location Services、Newsstand、Background Task Completion、Background Fetch 、Remote Notification、Background Transfer Service Ba
2017-11-18 15:45:45 3259
原创 IOS--如何从第N级界面返回到一级界面(即添加在UITabbarController上的UIController)
//第N个界面的返回按钮点击事件- (void)orderForBackBarButtonItemAction{ AppDelegate *app = (AppDelegate *)[UIApplicationsharedApplication].delegate; //MyTabBarController自己自定义的UItabbar
2017-11-17 10:07:35 1369
原创 HTML:Input元素标签的详细介绍
总结Input的标签:Input表示Form表单中的一种输入对象,其又随Type类型的不同而分文本输入框,密码输入框,单选/复选框,提交/重置按钮等,下面一一介绍。1,type=text输入类型是text,这是我们见的最多也是使用最多的,比如登陆输入用户名,注册输入电话号码,电子邮件,家庭住址等等。当然这也是Input的默认类型。参数name:同样是表示的该文本输入框名称。参数size:输
2017-10-21 15:31:18 14177 3
原创 iOS拨打电话(三种方法)
1,这种方法,拨打完电话回不到原来的应用,会停留在通讯录里,而且是直接拨打,不弹出提示(ios9.0以后会弹出提示并且回到原应用)NSMutableString *str=[[NSMutableString alloc] initWithFormat:@"tel:%@",@"186xxxx6979"];// NSLog(@"str======%@",str);[[UIAppl
2017-10-19 14:29:09 419
原创 微信支付提示支付验证签名失败
在APP里集成了微信支付的SDK,按照官方代码用服务器返回给我的数据来调起支付,可是不知道为什么总是提示支付验证签名失败,网上说是参数名的大小写问题,但是这个参数名传的时候是用的SDK里的方法,那个.a静态库又没办法看,官方代码肯定没问题了,所以就该找找自己的问题比较大的可能性是时间戳的转换问题,,后台返回给我的时间戳是字符串格式的,人多人都是直接用强转的方式,就是NSString
2017-10-19 14:23:24 2770
原创 App界面适配iOS11(包括iPhoneX的奇葩尺寸)
推荐几篇文章直接看:1.App界面适配iOS11(包括iPhoneX的奇葩尺寸)2.你可能需要为你的 APP 适配 iOS 11
2017-10-19 14:16:59 1754
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人