iOS那些事
文章平均质量分 73
huanglinxiao
个人爱好学习,性格外向,爱好交友,呵呵
展开
-
iOS Universal Links(通用链接)详细教程
iOS9.0推出的用于应用之间跳转的一种机, 通过一个https的链接启动app。如果手机有安装需要启动的app,可实现无缝跳转。如果没有安装,会打开网页。实现场景:微信链接无缝跳转App, 网页链接无缝跳转AppBundle Identifler所在的位置 :Team ID所在的位置:打开页面,登录apple 开发者账号,划到页面下方,找到将以下json文本复制进去,并修改teamID和Bundle Identifler。details:是数组,可以有多个数据,即可支持多个app。原创 2024-01-13 21:01:40 · 1930 阅读 · 0 评论 -
iOS 项目更改名字
前言:在iOS开发中,有时候想改一下项目的名字,这会遇到很多麻烦。直接改项目名的话,Xcode不会帮你改所有的名字 项目中的很多文件、文件夹或者是项目设置的项,都是不能随便改的,有时候改着改着,就会编译不了。所以各位重命名项目时,记得先备份好一份噢。本文我会介绍一种“完美”的修改方法。注意:重命名项目时,记得先备份好一份注意:重命名项目时,记得先备份好一份注意:重命名项目时,记得先备份好一份重要的事情说三遍本文会把一个项目名叫OldDemo123改成NewDemo。正文:...转载 2021-01-27 16:40:35 · 438 阅读 · 0 评论 -
Xcode. pods 第一次在项目中安装使用的一些问题
pods 安装在项目中的 操作 可以和视频中的操作一致:http://blog.cocoapods.org/CocoaPods-1.8.0-beta/,一:期间在执行 pod install 时可能出现通过 CocoaPods 执行 pod install 升级项目依赖库的时候,终端执行 install 命令后等待许久抛出了如下异常信息:[!] CDN: trunk Repo update failed - 40 error(s):CDN: trunk URL couldn't be d原创 2020-07-30 17:14:24 · 344 阅读 · 0 评论 -
苹果手机 获取 UDID
1:微信扫描二维码2:点击右上角的三个点的按钮,点击用Safari打开3:点击获取UDID绿色的按钮4:会出现需要安装配置文件已获取信任,会跳转到设置中,点击右上角的安装5:输入手机的锁屏密码6:点击安装!7:UDID显示8:长按点击拷贝...原创 2020-03-20 14:06:43 · 613 阅读 · 0 评论 -
Xcode控制台调试常用命令
Xcode 中的调试技巧与我们的日常开发息息相关,而这些调试技巧在我们解决Bug时,常常有事半功倍的作用,经常会用到的有各种断点 和 命令。调试命令在上图中,右侧绿色区域就是Log 输出区,在 Log 输出区可以使用一些命令,来辅助调试。那有哪些调试命令呢?想要看所有的调试命令,可以在上图的右侧区域输入help,就会列出所有的调试命令。本文就介绍几个使用频率比较高的,其他就...原创 2020-01-19 18:30:41 · 1151 阅读 · 0 评论 -
iOS 自定义相机功能
导入相机的API在AVFoundation里所以得包含头文件#import <AVFoundation/AVFoundation.h>1.自定义相机需要的属性@interface CustomCameraVC ()<UIAlertViewDelegate>//捕获设备,通常是前置摄像头,后置摄像头,麦克风(音频输入)@property(nonatomic)A...原创 2020-01-19 16:37:41 · 2083 阅读 · 1 评论 -
iOS两种推送方式
iOS两种推送方式APNs(Apple Push Notification service =APNs)是Apple推送通知服务。2016年的WWDC,苹果上线了token验证的推送方式,通过获得一个认证密钥(APNs Auth Key)去生成服务器端token,并且token非常容易生成,可以使用这些token令牌代替推送证书。一个认证密钥可用于多个应用程序并且永远不过期。每一个需要推送的A...转载 2019-05-06 17:08:16 · 4487 阅读 · 0 评论 -
根据三个点计算夹角
#import <CoreLocation/CoreLocation.h>//角度换弧度#define DEGREES_TO_RADIANS(angle) ((angle) / 180.0 * M_PI)//弧度换角度#define RADIANS_TO_DEGREES(radians) ((radians) * (180.0 / M_PI))CLLocation...原创 2019-04-01 13:33:19 · 14673 阅读 · 4 评论 -
苹果appstore预览
苹果官方网址:https://help.apple.com/app-store-connect/#/dev4e413fcb8您可以提供 tH.264 和 ProRes 422(仅限 HQ)格式的 App 预览,并且需要具有如下规格:视频规格 H.264 格式 ProRes 422(仅限 HQ)格式 目标比特率 ...原创 2019-04-01 09:51:57 · 1970 阅读 · 0 评论 -
iOS 毛玻璃效果
直接上干货@property (nonatomic, strong) UIImageView *screenView;- (UIImageView *)screenView { if (!_screenView) { _screenView = [[UIImageView alloc] initWithFrame:[UIScreen mainScreen].b...原创 2019-04-10 15:02:18 · 829 阅读 · 0 评论 -
WKWebView 常见问题
导语WKWebView 是苹果在 WWDC 2014 上推出的新一代 webView 组件,用以替代 UIKit 中笨重难用、内存泄漏的 UIWebView。WKWebView拥有60fps滚动刷新率、和 safari 相同的 JavaScript 引擎等优势。简单的适配方法本文不再赘述,主要来说说适配 WKWebView 过程中填过的坑以及善待解决的技术难题。1、WKWebView...转载 2019-03-12 18:04:11 · 1210 阅读 · 0 评论 -
iOS wkwebview localstorage数据处理
WKWebView 在内存占用上优化的很多。但是在实践中发现bug:localstorage信息不一致。A页面和B页面都存在 一个WKWebView。 在B页面使用localstorage保存信息。 回到A页面取不到最新的数据。原因:https://developer.apple.com/reference/webkit/wkwebviewconfiguration中有个属性 pro...原创 2019-03-12 14:54:21 · 4494 阅读 · 0 评论 -
iOS webview 实现不允许上拉回弹但是可以下拉刷新
如果webview中不涉及到刷新功能的话,可以直接设置回弹属性self.webV.scrollView.bounces = NO;但是如果webview中需要进行下来刷新页面的功能的话 这个就不好使了。我们可以根据滑动来进行设置web的下拉刷新//1.设置头部刷新(我这里用的是mj)self.webView.scrollView.mj_header= [MJRefreshN...原创 2019-03-15 14:34:03 · 3297 阅读 · 0 评论 -
iOS 获取字符串中指定字符串距离的特定字符串最近的位置(字符串)
NSString *str = @"huangxiaolin"; NSMutableArray *array = [self getRangeStr:str findText:@"a"]; NSMutableArray *array2 = [self getRangeStr:str findText:@"l"]; NSInteger findtextInde...原创 2019-03-14 15:57:00 · 1241 阅读 · 0 评论 -
iOS APP启动
一. iOS程序的启动执行顺序程序启动顺序图具体执行流程 程序入口 进入main函数,设置AppDelegate称为函数的代理 main函数中执行了一个UIApplicationMain这个函数. 1 2 3 4 5 6 7 8 int main(int a...原创 2019-02-22 11:33:34 · 473 阅读 · 0 评论 -
iOS 解决addObject`传入一个`nil`导致崩溃问题
我们经常在使用`NSArray``NSMutableArray``NSDictionary``NSMutableDictionary`的时候。我们可能会调用`addObject`传入一个`nil`, 也有可能是会`objectAtIndex`传入一个越界的index。尤其是在数据基本依赖于服务端返回的的情况,这种crash大幅增加。最近项目上经常出现`NSDictionary`的`setObjec...原创 2019-05-09 17:27:43 · 1369 阅读 · 0 评论 -
iOS在APP中添加崩溃检测并将崩溃信息存储到本地
(1)加上监听异常的代码- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { NSSetUncaughtExceptionHandler(&UncaughtExceptionHandler); ...原创 2019-05-14 18:12:59 · 918 阅读 · 0 评论 -
iOS 开发规范
本文参考了苹果官方编码指南和github上一些知名的编码规范,也算是取众人之所长,集百家之精华的一篇文章。读者可以根据自己的实际需要和兴趣点来选择性的阅读。本文主题部分主要由以下两章(共32节)构成:(一) 命名规范1.通用命名规范(讲述命名的一些通用规范) 2.缩写规范(讲述常见的缩写以及缩写规范) 3.Method命名规范(讲述方法命名的具体规范) 4.Accessor命名规范(讲述...转载 2019-06-05 14:28:21 · 1251 阅读 · 0 评论 -
iOS 创建pod公有库(初级一)
第一次搞这个,我太难了。0x1 注册 COCOAPODS 用户注册 Session/// 注册 session$ pod trunk register YOURMAIL 'YOURNAME' --verboseopening connection to trunk.cocoapods.org:443...openedstarting SSL for trunk.cocoapo...转载 2019-09-10 18:07:55 · 2113 阅读 · 1 评论 -
iOS 自定义导航栏 简单好使用
自定义导航栏,就是隐藏系统的导航栏,自己添加一个view。系统的导航栏可以在 父类的 NavViewController中一次设置: self.navigationBarHidden=YES;也可以在每一个controller中设置:[self.navigationController setNavigationBarHidden:YESanimated:ani...原创 2019-09-04 14:24:42 · 7263 阅读 · 4 评论 -
iOS 设备型号
iPhone、iPad、iPod等设备型号列表,移除了被淘汰的设备、或性能跟不上的设备附上一个设备表链接地址:https://www.theiphonewiki.com/wiki/Models直接上代码:需要导入头文件#import <sys/utsname.h>代码主体/** 获取设备名称 */- (NSString *)iphoneName{...转载 2019-08-06 17:57:43 · 136 阅读 · 0 评论 -
iOS cell 侧滑 删除自定义
https://github.com/safiriGitHub/ZSSideSlipCell转载 2019-08-06 17:11:13 · 583 阅读 · 0 评论 -
iOS学习之设置UITableViewCell之间的间距(推荐第四种)
1.设置假的间距,我们在tableviewcell的contentView上添加一个view,比如让其距离上下左右的距离都是10;这个方法是最容易想到的;2.用UIContentView来代替tableview,然后通过下面这个函数来设置UICollectionViewCell的上下左右的间距;<span style="font-size:18px;">//协议中的方法,用于...转载 2019-08-06 17:08:35 · 2233 阅读 · 0 评论 -
iOS. 表格cell 侧滑按钮
#pragma mark -- tableview delegate/datasouce- (NSArray<UITableViewRowAction *> *)tableView:(UITableView *)tableView editActionsForRowAtIndexPath:(NSIndexPath *)indexPath{ NSString *titleC...原创 2019-08-05 16:17:34 · 497 阅读 · 0 评论 -
iOS 12 wkwebview 输入框消失页面不恢复问题
1.webview页面添加 键盘隐藏和显示的监听 [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillHide) name:UIKeyboardWillHideNotificatio...原创 2019-07-22 12:01:57 · 1760 阅读 · 0 评论 -
iOS 理解静态库和动态库
什么是库 ? 库就是程序代码的集合,将N个文件组织起来,是共享程序代码的一种方式。库从本质上来说是一种可执行代码的二进制格式,可以被载入内存中执行。库的分类开源库:源代码是公开的,可以看到每个实现文件(.m文件)的实现,例如GitHub上的常用的开源库:AFNetworking、SDWebImage等; 闭源库:不公开源代码,是经过编译后的二进制文件,看不到具体的实现。闭源库又分为...转载 2019-07-18 11:27:11 · 599 阅读 · 0 评论 -
iOS MJ 刷新 一些自定义
https://www.cnblogs.com/yajunLi/p/5735990.html下拉刷新控件目前比较火的有好几种,本人用过MJRefresh 和 SVPullToRefresh,相对而言,前者比后者可定制化、拓展新都更高一点。因此本文着重讲一下MJRefresh的简单用法。导入项目: cocoapods导入:pod 'MJRefresh' 手动导入: 将...转载 2019-07-12 21:01:31 · 1640 阅读 · 0 评论 -
iOS 视图UIViewController的生命周期
1.initWithNibName:bundle:初始化UIViewController,执行关键数据初始化操作,非StoryBoard创建UIViewController都会调用这个方法。** 注意: 不要在这里做View相关操作,View在loadView方法中才初始化。**2. initWithCoder:如果使用StoryBoard进行视图管理,程序不会直接初始化一个UIV...原创 2019-02-22 11:22:24 · 1490 阅读 · 0 评论 -
Swift:常用宏
//屏高let kScreenHeight = UIScreen.main.bounds.size.height//屏宽let kScreenWidth = UIScreen.main.bounds.size.width//iPhonex以上判断let IS_IPhoneX_All = (kScreenHeight == 812 || kScreenHeight == 896)...原创 2019-01-07 10:55:55 · 1160 阅读 · 0 评论 -
iOS 面试题(七):为什么 Objective-C 的方法调用要用方括号?
问题为什么 Objective-C 的方法调用要用方括号 [obj foo],而不是别的语言常常使用的点 obj.foo ?答案首先要说的是,Objective-C 的历史相当久远,如果你查 wiki 的话,你会发现:Objective-C 和 C++ 这两种语言的发行年份都是 1983 年。在设计之初,二者都是作为 C 语言的面向对象的接班人,希望成为事实上的标准。最后结果大家都知道了,C++ ...转载 2018-03-07 21:13:37 · 434 阅读 · 0 评论 -
iOS与h5交互
废话不多说直接上干货:iOS与h5常见的就是原生传值给h5,h5调用原生两种;第一种(原生传值给h5):本篇博客则是讲了OC传值给JS,代码似乎更简单。OC传值给JS的代码:// 页面加载完成之后调用- (void)webView:(WKWebView *)webView didFinishNavigation:(WKNavigation *)nav原创 2017-12-24 09:45:16 · 801 阅读 · 0 评论 -
app打包上传遇到的问题
app使用a'rchive打包上传ipa时遇到一个问题:ERROR ITMS-90209: "Invalid Segment Alignment. The app binary at 'tinsine.app/Frameworks/Hyphenate.framework/Hyphenate' does not have proper segment alignment. Try rebui原创 2017-06-29 11:24:05 · 3059 阅读 · 0 评论 -
极光推送页面跳转
近几天我们公司开发项目要求用到极光推送。于是乎看了看 极光 的官方文档,写的很粗糙,但是总体还是不错的。我这里就简单说说关于推送的跳转问题,因为在一些技术群里面有人这样问过我。#pragma mark -- 程序点击推送消息进入的方法// iOS 10 Support- (void)jpushNotificationCenter:(UNUserNotificat原创 2017-03-21 09:03:17 · 2054 阅读 · 0 评论 -
iOS 面试题(6.):自己写的 view 成员,应该用 weak 还是 strong?
我们知道,从 Storyboard 往编译器拖出来的 UI 控件的属性是 weak 的,如下所示@property (weak, nonatomic) IBOutlet UIButton *myButton;那么,如果有一些 UI 控件我们要用代码的方式来创建,那么它应该用 weak 还是 strong 呢?为什么?|||||||转载 2016-12-15 19:45:08 · 357 阅读 · 0 评论 -
iOS 面试题(5.):weak 的内部实现原理
问题weak 变量在引用计数为0时,会被自动设置成 nil,这个特性是如何实现的?|||||||| 思考时间,想好了请往下翻答案。|||||||||答案在 Friday QA 上,有一期专门介绍 weak 的实现原理。https://mikeash.com/pyblog/friday-qa-2010-07-转载 2016-12-15 19:36:56 · 365 阅读 · 0 评论 -
iOS 容易造成循环引用的场景
ARC已经出来很久了,自动释放内存的确很方便,但是并非绝对安全绝对不会产生内存泄露。导致iOS对象无法按预期释放的一个无形杀手是——循环引用。循环引用可以简单理解为A引用了B,而B又引用了A,双方都同时保持对方的一个引用,导致任何时候引用计数都不为0,始终无法释放。若当前对象是一个ViewController,则在dismiss或者pop之后其dealloc无法被调用,在频繁的push或者pres转载 2016-12-05 21:51:33 · 329 阅读 · 0 评论 -
iOS 面试题(3.):为什么 weakSelf 需要配合 strong self 使用
问题继续回答昨天的问题第二问。我们知道,在使用 block 的时候,为了避免产生循环引用,通常需要使用 weakSelf 与 strongSelf,写下面这样的代码:__weak typeof(self) weakSelf = self;[self doSomeBackgroundJob:^{ __strong typeof(weakSelf) strongSelf = w...转载 2016-12-03 17:14:53 · 3460 阅读 · 1 评论 -
iOS面试题(2.)关于在block中使用weakSelf的讨论
问题我们知道,在使用 block 的时候,为了避免产生循环引用,通常需要使用 weakSelf 与 strongSelf,写下面这样的代码:__weak typeof(self) weakSelf = self;[self doSomeBlockJob:^{ __strong typeof(weakSelf) strongSelf = weakSelf; if (str...转载 2016-12-03 16:58:53 · 504 阅读 · 0 评论 -
iOS 面试题(1.)寻找最近公共View
题目:找出两个 UIView 的最近的公共 View,如果不存在,则输出 nil 。||||||| 思考时间,想好了请继续看下面的题解。||||||||分析:这其实是数据结构里面的找最近公共祖先的问题。一个 UIViewController 中的所有 view 之间的关系其实可以看成一颗树,UIViewController 的 view 变量是这颗树转载 2016-11-30 21:23:29 · 1179 阅读 · 0 评论 -
iOS之runtime 原理与使用
runtime 原理与使用方法调用 objc_msgSend调用方法(函数)是语言经常使用的功能,在 Objective-C 中专业一点的叫法是 传递消息(pass a message)。Objective-C 的方法调用都是 动态绑定 ,而C语言中函数调用方式是 静态绑定 ( static binding ),也就是说,在编译时期就能决定和知道在运行时所调用的函数转载 2016-09-21 15:02:06 · 317 阅读 · 0 评论