
Objective-C
文章平均质量分 55
Lucy-JY
iOS 开发终身学习者!
展开
-
iOS-RunLoop-记一次RunLoop监控卡顿探索
前两天,看到一篇文章,说的是在某种卡顿方案监控下,无法监控到以下代码引起的卡顿:- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { int a = 0; NSLog(@"-->耗时操作begin"); for (long i = 0; i < 1000000000; i++) { a = a + 1; }原创 2020-12-19 17:07:19 · 448 阅读 · 1 评论 -
iOS -从 AppStore 打开应用程序奔溃
问题描述:当用户更新应用程序后,直接点击 AppStore 上的“打开”按钮发生奔溃。解决过程:1.首先以为是使用 Userdefault 存储版本号出错了。后来经过测试,Userdefault 如果存了一个空值,是不会在 plist 文件里新增一个键值对的,也不会报错。但是给字典存一个 nil,肯定会奔溃的。 2.后来又怀疑切换根视图控制器出了问题。当我设置根视图控制器为引导页视图控制器时,不会原创 2017-06-14 09:29:47 · 738 阅读 · 0 评论 -
iOS开发-CGRectGetMidX. CGRectGetMidY.CGRectGetMinY. CGRectGetMaxY. CGRectGetMinX. CGRectGetMaxX
UILabel *label = [[UILabel alloc]initWithFrame:CGRectMake(10, 10, 110, 150)]; label.backgroundColor = [UIColor orangeColor]; [self.view addSubview:label]; /* CGRectGetHeight返回label本身的高原创 2017-07-16 17:10:11 · 639 阅读 · 0 评论 -
iOS调用QQ客户端,发起临时会话
方法一:通过 QQ 推广功能,不用接入 SDK 发起临时会话。需要用户安装 QQ 且打开的 QQ 必须开启推广功能。开启 QQ 推广功能if([[UIApplicationsharedApplication] canOpenURL:[NSURLURLWithString:@"mqq://"]]) { //用来接收临时消息的客服QQ号码(注意此QQ号需开通QQ推广功能,否则陌生人向他发送消息会失原创 2017-07-10 08:49:17 · 1179 阅读 · 0 评论 -
iOS-如何消除警告
基本语句#pragma clang diagnostic push#pragma clang diagnostic ignored "-Wundeclared-selector" 这里是出现警告的代码段#pragma clang diagnostic pop上面的语句中 ignored 后面的字符串就是消除对应警告所需要写的字符串,不同的警告有不同的字符串与之对应,找到对应的警告即可(快速查阅快原创 2017-07-19 15:41:19 · 2058 阅读 · 0 评论 -
ios-UITextView 输入字数限制,一行代码搞定
实现 UITextViewDelegate 方法- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text{ return textView.text.length + (text.length - range.length)原创 2017-08-23 18:08:48 · 2510 阅读 · 0 评论 -
iOS-UITextView 输入字数限制一行代码搞定
实现 UITextViewDelegate 方法 - (BOOL)textView:(UITextView )textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString )text { return textView.text.length + (text.length - range.length原创 2017-08-23 18:12:15 · 902 阅读 · 0 评论 -
iOS开发-AR
iOS 11即将来临,届时所有的苹果用户都将体验到 AR 的魅力。作为开发者的我们,技术当然不能落伍。不管怎样,先体验一把!工具Xcode9iOS 11 没有的小伙伴可以到苹果官网下载 https://developer.apple.com/download/安装 iOS 11iPhone 打开https://developer.apple.com/download/,点击下载如图 按照原创 2017-09-07 11:57:25 · 8616 阅读 · 0 评论 -
iOS 开发-一篇短文教你快速掌握 runtime 和 KVO
本文涉及到两个面试中经常被问到的知识点,runtime 和 KVO。希望通过本文将两个知识点结合起来一起学习,加深印象。Runtime 经常被用来做什么?动态添加属性 objc_setAssociatedObject(id _Nonnull object, const void * _Nonnull key, id _Nullable value, objc_AssociationPolicy原创 2017-09-17 00:48:57 · 591 阅读 · 0 评论 -
iOS-适配iPhoneX相关
屏幕大小iPhone X 的屏幕宽度同 iPhone 6、iPhone 6s、iPhone 7 和 iPhone 8 的 4.7 英寸屏幕宽度相同,即 375pt。屏幕垂直高度增加了 145pt,增加了 20% 的可视空间。竖屏规格:1125px × 2436px (375pt × 812pt @3x) 横屏规格:2436px × 1125px (812pt × 375pt @3x)状态栏高度增加原创 2017-12-08 17:10:19 · 889 阅读 · 0 评论 -
iOS-VoIP Push Notification
最近看了一篇文章,说的是微信实现收款到账语音提醒功能实现。原文章 文中提到了VoIP Push Notification,本文针对推送的种类以及如何利用推送唤醒 app 进行总结。普通推送远程推送和本地推送区别网上资料太多了,简单说一下,比如今日头条,有什么大的新闻会在手机端接收到推送,这个就是远程推送,是把相关信息推送到苹果推送服务器-APNS。本地推送就是在本地设定一个时间,其实就是一个类似闹原创 2017-12-23 11:48:16 · 3386 阅读 · 0 评论 -
CGD 详解
1.0 GCD 概要1.1 什么是 GCDGrand Central Dispatch(GCD)是一种异步执行任务的技术之一。一般将应用程序中记述的线程管理用的代码在系统级中实现。 是Apple开发的一个多核编程的较新的解决方法。它主要用于优化应用程序以支持多核处理器以及其他对称多处理系统。它是一个在线程池模式的基础上执行的并行任务。在Mac OS X 10.6雪豹中首次推出,也可原创 2018-01-13 17:34:17 · 2502 阅读 · 0 评论 -
iOS-字符串反转
NSString *string = @"abcdefg"; NSMutableString *mstring = [NSMutableString string]; for (NSInteger i = string.length - 1; i >= 0; i--) { NSString *lastC = [string substringWithR...原创 2019-02-15 21:56:34 · 847 阅读 · 0 评论 -
iOS-实现超出父视图点击响应
关于这个问题,其实网上有很多技术博客给出了很好的方案,但是仍然有个别博客将有严重错误的结论挂在网上(例如),本文就该问题进行了严格的论证,希望能够帮到有需要的人。错误结论:每次递归去调用hitTest:(CGPoint)point withEvent:(UIEvent *)event之前,都会调用pointInside:withEvent:来确定该触摸点是否在该View内。 正确结论:先调用hit原创 2017-07-11 17:03:49 · 991 阅读 · 0 评论 -
iOS 开发-Xcode中的 workspace, project, target, scheme
project 包含了以下信息:源文件代码的头文件和实现文件 静态库,动态库, 资源文件(如文本,xml,plist等) 图片资源 界面资源文件(xib, storyboard等) 在文件结构的导航中,采用group去组织文件(实际开发中,尽量使用实体文件夹)project的编译级别配置文件如(debug, release) target 运行环境如:debug,test proje原创 2017-06-30 16:50:14 · 792 阅读 · 0 评论 -
iOS 开发中出现假死解决思路
假死,就是 APP 没有响应,点击界面任何地方都不会有响应,但是又不会闪退的一种现象。结合网上的一些资料和开发经验总结一下常见的原因:1.一个透明的视图盖在了整个界面上在做弹出框,或者遮盖的时候,不要将视图添加到下面的窗口上[UIApplication sharedApplication].windows.lastObject最后一个 window 不一定是你当前显示的 window。请看下面的运行原创 2017-06-30 09:18:11 · 4286 阅读 · 0 评论 -
iOS开发常用宏
大家都是知道使用宏不仅方便,而且可以提高开发效率。下面总结了iOS开发过程中的一些常用宏,会持续的往里面添加。转载 2016-10-21 20:49:09 · 351 阅读 · 0 评论 -
当你把文件存入 Document 时,用 xcode 调试发现路径会变
#在我们的印象中一个路径获取后,下一次再想进此路径只需原路径搜索即可。但在iOS8中,倘若再抱有此思想,我想只会碰壁。1.在iOS8之前,我们获取到沙盒中的document、cache、tmp之后,下一次模拟器或真机无论怎样重启,这具体的路径是固定的了。(下面我们以Document为例介绍)///Users/fanmingyang/Library/Developer/CoreSimulator/De转载 2016-12-03 11:21:20 · 1510 阅读 · 0 评论 -
将 view 生成 图片后,保持图片的清晰度,得修改一个参数,必须为屏幕的缩放倍率
将 view 生成 图片后,保持图片的清晰度,得修改一个参数,必须为屏幕的缩放倍率,如下+ (UIImage *)createImageFromView:(UIView *)view { UIGraphicsBeginImageContextWithOptions(CGSizeMake(view.frame.size.width,原创 2016-11-28 09:06:17 · 727 阅读 · 0 评论 -
常用正则表达式
一、校验数字的表达式 1 数字:^[0-9]*$ 2 n位的数字:^\d{n}$ 3 至少n位的数字:^\d{n,}$ 4 m-n位的数字:^\d{m,n}$ 5 零和非零开头的数字:^(0|[1-9][0-9]*)$ 6 非零开头的最多带两位小数的数字:^([1-9][0-9]*)+(.[0-9]{1,2})?$ 7 带1-2位小数的正数或负数:^(\-)?\d+(\.原创 2017-01-07 11:01:49 · 342 阅读 · 0 评论 -
iOS 自动布局框架 – Masonry 详解
Masonry介绍这篇文章只是简单介绍Masonry,以及Masonry的使用,并且会举一些例子出来。但并不会涉及到Masonry的内部实现,以后会专门写篇文章来介绍其内部实现原理,包括顺便讲一下链式语法。什么是MasonryMasonry是一个对系统NSLayoutConstraint进行封装的第三方自动布局框架,采用链式编程的方式提供给开发者API。系统AutoLayout支持的操作,Mason原创 2017-01-16 08:55:50 · 836 阅读 · 0 评论 -
iOS 开发-CocoaPods的使用 - 到底是pod install 还是 pod update?
使用 CocoaPods 的细节问题对于初学者来说,使用 pod install 或者 pod update 并不会影响大局,所以有的人就习惯了一直沿用自己的更新方式。下面就简单介绍一下这两种更新方式的区别1.pod install :这个是第一次在工程里面使用pods的时候使用,并且,也是每次你编辑你的Podfile(添加、移除、更新)的时候使用。每次运行pod install命令的时候,在下载、原创 2017-02-10 09:56:08 · 2681 阅读 · 0 评论 -
iOS导入自定义字体,艺术字体
1、将字体资源.ttf文件添加到你的项目中,在Info.plist中添加Array字段 Fonts provided by application 并添加字体文件名(可添加多项)2、在 TARGETS -> Build Phases -> Copy Bundle Resources 添加对应的字体文件3、查找字体名称:NSArray *familyNames = [UIFont familyName原创 2017-01-22 17:01:57 · 822 阅读 · 0 评论 -
大牛的开发经验总结
`#大牛的开发经验总结1.cocoa pods 常用的frameworkplatform :ios, '7.0'target 'store' dopod 'AFNetworking', '~> 3.1.0'pod 'JSONKit', '~> 1.5pre'pod 'MBProgressHUD', '~> 0.9.2'pod 'SDWebImage', '~> 3.7.6'pod 'SVPu转载 2017-02-21 11:18:13 · 684 阅读 · 0 评论 -
iOS 开发中延迟操作
延迟操作的方案一般有三种:1.NSObject的方法:[self performSelectorOnMainThread:<#(nonnull SEL)#> withObject:<#(nullable id)#> waitUntilDone:<#(BOOL)#>]2.使用NSTimer的方法:[NSTimer timerWithTimeInterval:<#(NSTimeInterval)#> i原创 2017-03-11 18:52:19 · 820 阅读 · 0 评论 -
iOS的键盘种类(不同的键盘布局)
1.UIKeyboardTypeDefault常用于文本输入2.UIKeyboardTypeASCIICapable常用于密码输入3.UIKeyboardTypeNumbersAndPunctuation主键盘显示如上图,次键盘显示字母4.UIKeyboardTypeURL用于网址输入5.UIKeyboardTypeNumberPad只有数字的数字键盘 (没有符号)6.UIKeyboardTypeP原创 2017-03-25 09:20:55 · 1893 阅读 · 0 评论 -
iOS开发之CLAuthorizationStatus枚举
一、第一个枚举值:kCLAuthorizationStatusNotDetermined的意思是:定位服务授权状态是用户没有决定是否使用定位服务。二、第二个枚举值:kCLAuthorizationStatusRestricted的意思是:定位服务授权状态是受限制的。可能是由于活动限制定位服务,用户不能改变。这个状态可能不是用户拒绝的定位服务。三、第三个枚举值:kCLAuthorizationStat原创 2017-03-25 09:54:25 · 2198 阅读 · 0 评论 -
iOS开发 - +load和+initialize方法
当类被引用进项目的时候就会执行load函数(在main函数开始执行之前),与这个类是否被用到无关,每个类的load函数只会自动调用一次.由于load函数是系统自动加载的,因此不需要再调用[super load],否则父类的load函数会多次执行。1.当父类和子类都实现load函数时,父类的load方法执行顺序要优先于子类2.当一个类未实现load方法时,不会调用父类load方法3.类中的l原创 2017-05-13 17:45:30 · 536 阅读 · 0 评论 -
iOS 开发-修改 UISearchController中 searchBar 的取消按钮颜色
查了很多资料,终于找到了方法,亲测有效,非常方便简单! [[UIBarButtonItem appearanceWhenContainedIn:[UISearchBar class], nil] setTitleTextAttributes:[NSDictionary dictionaryWithObjectsAndKeys:[UIColor w原创 2016-10-22 16:46:59 · 2008 阅读 · 0 评论