- 博客(139)
- 资源 (1)
- 收藏
- 关注
原创 GitHub上史上最全的iOS开源项目分类汇总
github上比较好用的第三方Category/Util sstoolkit一套Category类型的库,附带很多自定义控件 功能不错~ BFKit又一套Category类型的 Kit,还有几个工具类 APUtils
2017-07-06 18:44:37 3369
原创 时间与日期处理
主要有以下类: NSDate -- 表示一个绝对的时间点NSTimeZone -- 时区信息NSLocale -- 本地化信息NSDateComponents -- 一个封装了具体年月日、时秒分、周、季度等的类NSCalendar -- 日历类,它提供了大部分的日期计算接口,并且允许您在NSDate和NSDateComponents之间转换NSDateFormatter -
2017-06-23 10:21:23 2358
原创 申请企业型开发者账号流程(申请企业开发者账号的时候类型选择Company/Organization为什么会变成公司型账号)
要去下面这个网址,重点是点击进去选择申请Type的时候,必须是从两个选项中选择Company而不是从三个选项中选择Company,现在那个客服已经给我发邮件告诉我正在跟进开发者计划的申请....https://developer.apple.com/programs/enterprise/enroll/
2017-03-27 18:09:04 3585
原创 IOS---多个网络请求如何控制回调顺序以及所有网络请求执行完后执行下一步
开发需求:1、原型是多个网络请求不做任何处理2、多个网络请求,需要所有网络请求都完成后才能进行下一步的操作。如下载多个图片,下载完了才能展示。3、多个网络请求,在2情况下还要求所有的网络请求必须回调也按顺序回调。 实测首先在viewDidLoad创建一个按钮 点击的时候做网络请求- (void)viewDidLoad { [super viewDidL...
2019-02-21 17:43:11 5153 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 277
原创 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 1034 1
原创 IOS---------Controller瘦身一:剥离UITableView,封装dataSource和deleagte。
MVC在讨论解耦之前,我们要弄明白 MVC 的核心:控制器(以下简称 C)负责模型(以下简称 M)和视图(以下简称 V)的交互。这里所说的 M,通常不是一个单独的类,很多情况下它是由多个类构成的一个层。最上层的通常是以 Model结尾的类,它直接被 C 持有。Model类还可以持有两个对象:Item:它是实际存储数据的对象。它可以理解为一个字典,和 V 中的属性一一对应 Cache:...
2019-01-24 23:58:03 2004
原创 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 596
原创 IOS---原子属性atomic和非原子属性nonatomic
一:原子属性和非原子属性1. OC在定义属性时有nonatomic和atomic两种选择,默认为atomic属性atomic:原子属性,为setter方法加自旋锁(即为单写多读)nonatomic:非原子属性,不会为setter方法加锁。 2. nonatomic和atomic的对比atomic:线程安全,需要消耗大量的资源;nonatomic:非线程安全,适合内存小的...
2018-10-28 16:21:33 1351
原创 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 390
原创 iOS-----initializer element is not a compile-time constant
初始化一个全局变量或static变量时,只能用常量赋值,不能用变量赋值!如下就会报这个错误:(KUIScreenWidth)是变量static CGFloat const topButtonWidth = kUIScreenWidth/2.0;...
2018-09-06 09:52:14 2605
原创 iOS----在子视图中获取父视图的控制器
在实际项目当中,我们经常会遇到需要在一个父类为UIView的子视图上进行POP或是PUSH操作,但该子视图是不能用POP或PUSH的,这时候我们就可以根据该子视图获取到父视图的控制器,从而进行POP或PUSH,具体方法如下:/** * 获取父视图的控制器 * * @return 父视图的控制器 */- (UIViewController *)XC_GetViewControll...
2018-09-06 09:44:24 1664
原创 iOS开发中variable is not assignable missing block的解决办法
如下图所示,当我们在block代码块中使用局部变量时,就会很容易出现如图的错误: 意思是:变量是不可转让的缺块。 因为局部变量在block内部是readonly(只读的)其实,我们只需在变量声明时加上static关键字就可以了,如图所示: 或是变量前加上__bl...
2018-09-06 09:37:42 479
原创 iOS----@dynamic
一、@dynamic与@synthesize的区别@property有两个对应的词,一个是@synthesize,一个是@dynamic。如果@synthesize和@dynamic都没写,那么默认的就是@syntheszie var = _var; @synthesize的语义是如果你没有手动实现setter方法和getter方法,那么编译器会自动为你加上这两个方法。 @dy...
2018-08-19 16:44:43 2251
原创 iOS-如何正确使用const,static,extern
一、const与宏的区别(面试题):const简介:之前常用的字符串常量,一般是抽成宏,但是苹果不推荐我们抽成宏,推荐我们使用const常量。编译时刻:宏是预编译(编译之前处理),const是编译阶段。 编译检查:宏不做检查,不会报编译错误,只是替换,const会编译检查,会报编译错误。 宏的好处:宏能定义一些函数,方法。 const不能。 宏的坏处:使用大量宏,容易造成编译时间久,...
2018-08-19 16:43:04 754
原创 IOS-内存泄漏检测工具Instruments中的Leaks
Instruments 的介绍: Instruments 是一个很灵活的、强大的工具;是性能分析、动态跟踪 和分析OS X 以及iOS代码的测试工具;用它可以极为方便收集关于一个或多个系统进程的性能和行为的数据,并能及时随着时间跟踪而产生的数据,并检查所收集的数据,还可以广泛收集不同类型的数据;也可以追踪程序运行的过程,这样instrument就可以帮助我们了解用户的应用程序和操作系统...
2018-06-06 00:06:09 5117
原创 iOS 判断字符串中含有某个字符串
//判断字符串是否包含“iOS”方式一:containString查找字符串是否包含“ iOS ”,适用于IOS8及以上,以下的系统会因为没有此API而报错。NSString*str = @“我是 iOS 开发工程师”;if([str containsString:@"iOS"]) { NSLog(@"字符串包含“ iOS”");}方式二:rangeOfString查...
2017-12-16 14:31:53 3167
原创 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 890
原创 上传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 599
原创 iOS开发之QQ, 在APP中打开指定qq聊天界面的方法
1. 电商,最害怕的事情就是与用户失联了。 所以即时通讯是非常重要的。 2. 微信, 现在微信已经把外部打开微信的方式全部禁用了,所以 打开是不可能的,微信只能通过加好友,才能与你的客服进行聊天3. QQ, 从外部打开指定QQ的聊天界面,是可以的,通过网页的方式。详细代码如下//在这里放QQ号NSString *qqNumber = @"2158015525";NSString
2017-12-16 14:11:20 1656
原创 reason: '-[__NSCFNumber length]: unrecognized selector sent to instance 0x1c0424640'
出现这种报错很大的原因是因为类型给错了,或许你这个数据是从json上解析后得到的,但是需要看一下这个数据是NSString还是NSNumber类型,如果是NSNumber类型的话,你又直接使用NSString类型的变量去接收他,那么肯定会报这样的错误,所以一定要注意数据的类型最常见的就是:json解析后拿到一个值后不知道后台传回的是什么类型,就类似说再[NSString str
2017-12-16 14:09:17 804
原创 iOS开发中variable is not assignable missing block的解决办法
如下图所示,当我们在block代码块中使用局部变量时,就会很容易出现如图的错误: 意思是:变量是不可转让的缺块。 其实,我们只需在变量声明时加上static关键字就可以了,如图所示:
2017-11-21 16:21:10 19050
原创 iOS开发:发短信、发邮件、打电话及摇一摇实现
简介在iOS开发中,可能会用到发短信、发邮件、打电话及摇一摇等功能,比如在应用程序的‘关于’界面,我们可能会留下电话号码或邮箱等联系方式,为了方便用户直接在应用程序中做操作,提升用户体验,我们会设计一些交互动作,让用户轻松的去发短信、打电话或发邮件等。如下我将简单介绍几种功能的具体实现方法。需要注意的是,如下功能的实现必须通过真机调试,模拟器暂不支持如上功能。打电话meth
2017-11-18 15:48:22 831
原创 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 3147
原创 IOS--如何从第N级界面返回到一级界面(即添加在UITabbarController上的UIController)
//第N个界面的返回按钮点击事件- (void)orderForBackBarButtonItemAction{ AppDelegate *app = (AppDelegate *)[UIApplicationsharedApplication].delegate; //MyTabBarController自己自定义的UItabbar
2017-11-17 10:07:35 1323
原创 HTML:Input元素标签的详细介绍
总结Input的标签:Input表示Form表单中的一种输入对象,其又随Type类型的不同而分文本输入框,密码输入框,单选/复选框,提交/重置按钮等,下面一一介绍。1,type=text输入类型是text,这是我们见的最多也是使用最多的,比如登陆输入用户名,注册输入电话号码,电子邮件,家庭住址等等。当然这也是Input的默认类型。参数name:同样是表示的该文本输入框名称。参数size:输
2017-10-21 15:31:18 13951 3
原创 iOS拨打电话(三种方法)
1,这种方法,拨打完电话回不到原来的应用,会停留在通讯录里,而且是直接拨打,不弹出提示(ios9.0以后会弹出提示并且回到原应用)NSMutableString *str=[[NSMutableString alloc] initWithFormat:@"tel:%@",@"186xxxx6979"];// NSLog(@"str======%@",str);[[UIAppl
2017-10-19 14:29:09 341
原创 微信支付提示支付验证签名失败
在APP里集成了微信支付的SDK,按照官方代码用服务器返回给我的数据来调起支付,可是不知道为什么总是提示支付验证签名失败,网上说是参数名的大小写问题,但是这个参数名传的时候是用的SDK里的方法,那个.a静态库又没办法看,官方代码肯定没问题了,所以就该找找自己的问题比较大的可能性是时间戳的转换问题,,后台返回给我的时间戳是字符串格式的,人多人都是直接用强转的方式,就是NSString
2017-10-19 14:23:24 2694
原创 App界面适配iOS11(包括iPhoneX的奇葩尺寸)
推荐几篇文章直接看:1.App界面适配iOS11(包括iPhoneX的奇葩尺寸)2.你可能需要为你的 APP 适配 iOS 11
2017-10-19 14:16:59 1719
原创 RAC初识--004--RACSubject
RACSubject :信号提供者!!,自己可以充当信号,又能够发送信号!!#import "ViewController.h"#import @interface ViewController ()@end@implementation ViewController- (void)viewDidL
2017-10-12 00:48:00 286
原创 RAC初识--003--RACRACDisposable
RACDisposable:它可以帮助我们取消订阅.信号发送完毕则取消订阅.RACSubscriber(协议):订阅者(发送信号!)#import "ViewController.h"#import @interface ViewController ()/** */@property(nonatomic,stro
2017-10-12 00:42:22 1272
原创 -[__NSCFNumber rangeOfCharacterFromSet:]: unrecognized selector sent to instance
今日在写代码的时候遇到一个特别坑的问题,通过模型在两个页面之间传值的时候程序崩溃了,并报了这样一个错误:-[__NSCFNumber rangeOfCharacterFromSet:]: unrecognized selector sent to instance 0xb000000000000053(lldb) 通过查询,得知这是这个算是类型的不匹配,就是把NSN
2017-10-11 17:51:11 265
原创 初识RAC-002--RACSignal类
RAC是什么?RAC — ReactiveCocoa(RAC) Github一个开源框架!!RAC — 函数响应编程框架!!RAC有什么用?帮助我们更简单霸气的处理事件!!引入RAC 4.0.0RAC里面最常见和常用的类!!!RACSignal : 信号类!通过RACSignal创建一个信号!! (默认是:冷信号!!)通过订阅者!订阅这个
2017-10-11 00:14:04 228
原创 cocoapods本地的类库更新方法
cocoapods里管理的第三方更新的非常频繁,可能每个小时里面就会有一大堆的更新,所以,如果我们想使用最新的第三方我们就需要养成经常更新本地的类库的习惯,而且如果我们不时常更新的话,当我们某一天集中更新的话,会耗费较长的时间.所以养成这种习惯也挺好,更新本地类库很简单,并不需要很多步,但有可能很耗时间1.先介绍一些耗时比较长的方法更新所有库最简单最基本的方法pod upd
2017-10-11 00:05:31 1974
原创 初识RAC:001--Block简单使用
1.新建一个Person类.h文件中#import @interface Person : NSObject//0.block在ARC中试用Strong就行 在非ARC机制中试用Copy,block作为对象的属性@property(nonatomic,strong) void(^CZGBlock)(void);//返回值、方法名、参数//1.block作为方法的参数,()里
2017-10-10 23:43:01 287
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人