- 博客(45)
- 收藏
- 关注
原创 大厂常问iOS面试题--多线程篇
多线程的实现原理:事实上,同一时间内单核的CPU只能执行一个线程,多线程是CPU快速的在多个线程之间进行切换(调度),造成了多个线程同时执行的假象。如果是多核CPU就真的可以同时处理多个线程了。多线程的目的是为了同步完成多项任务,通过提高系统的资源利用率来提高系统的效率。
2024-10-21 23:57:15
713
原创 iOS面试题--Runtime篇
runtime 对注册的类,会进行内存布局,从一个粗粒度的概念上来讲,这时候会有一个 hash 表,这是一个全局表,表中是用 weak 指向的对象内存地址作为 key,用所有指向该对象的 weak 指针表作为 value。当此对象的引用计数为 0 的时候会 dealloc,假如该对象内存地址是 a,那么就会以 a 为 key,在这个 weak 表中搜索,找到所有以 a 为键的 weak 对象,从而设置为 nil。为这种属性设置新值时,设置方法既不持有新值(新指向的对象),也不释放旧值(原来指向的对象)。
2024-10-16 19:53:25
1004
原创 大厂常问iOS面试题–Runloop篇
block)时,libdispatch会向主线程的runloop发送消息唤醒runloop,runloop被唤醒后会从消息中获取block,在callout函数 CFRUNLOOP_IS_SERVICING_THE_MAIN_DISPATCH_QUEUE 中执行该block任务。GCD的main queue是一个串形队列,这样的结果就是dispatch_async(dispatch_get_main_queue(), …)传入的block会作为一个整体,在runloop的下一次循环时执行。
2024-10-16 19:09:49
1609
原创 Flurry iOS端调研和使用
https://www.flurry.com/ 用邮箱去官网注册账号然后Admin-Manage-Apps-+New App创建应用拿到api_key(方便起见生成两个应用,一个测试环境,一个线上运营环境)1.sdk初始化时打开crash开关,withCrashReporting=YES,默认withCrashReporting是NOAnalytics-
2023-01-16 17:49:10
867
原创 提高工作兴趣
提高工作兴趣,不吃生活的苦工作中,问题来了,当下重点经常是顶着压力快速处理掉问题,处理问题的过程又经常是没有深入研究问题的原因,有时候问题莫名其妙的就处理完了。等后面有空闲时又忘记曾经遇到的不了了之的问题,然后陷入无所事事的迷茫状态。每个bug都是一个提升技能的机会,遇到bug,先保存记录bug,有时间再来细细分析研究。这样也不至于后面为了学习而学习,丝毫没有动力。1.工作中遇到的难点,想学的专业技能,及时记录2.工作中遇到的bug,及处理方案分批次补充完整...
2022-04-11 16:19:44
221
原创 Mac 如何启动PHP环境XAMPP
一.先描述我遇到的问题1.我是每次直接从app上点击启动XAMPP的,但每次都显示一直在启动,也不知道启动失败成功(这里其实可以去安装的根目录/Applications/XAMPP/logs 查看日志)2.改用命令行启动启动前一定要先关闭mac自带的web服务,用以下的命令强制杀死全部 httpd 进程,注意使用sudo管理员权限sudo killall httpd多执行几次,直到...
2019-06-27 17:21:58
3111
原创 iPhone 各屏幕尺寸及解析
一.iPhone 各屏幕尺寸表手机型号屏幕物理尺寸屏幕密度开发尺寸像素尺寸倍图4/4s3.5 inch326 ppi320*480 pt640*960 px@2x5/5S/5c/SE4.0 inch326 ppi320*568 pt640*1136 px@2x6/6S/7/84.7 inch326 ppi375*667 pt75...
2019-06-24 17:23:35
39307
1
原创 如何通过蒲公英批量获取iPhone设备的udid
1.首先通过手机扫描工具扫描下面二维码2.扫描后跳转蒲公英链接3.点击在safari浏览器中打开4.点击在safari浏览器中打开后的效果:5.点击“获取UDID”,提示安装描述文件-点击允许按钮 6.点击允许后手机已安装好描述文件,会弹窗提示7.点击home键回到主页-点击iphone中设置-通用-描述文件-找到蒲公英描述文件-点击右上角安装8.点击安装-输入手机密码-...
2019-06-13 14:14:39
13202
原创 ReactNative MacOS环境安装
ReactNative学习中遇到的问题一.首先是环境搭建中过程及问题ReactNative国内环境安装资料比较多,可以直接参考ReactNative中文网(https://reactnative.cn) 我这里主要说下国际安装1.先安装Node10+ 环境或者像ReactNative中文网上写的通过命令行安装Node环境brew install nodebrew install wat...
2019-05-17 15:09:34
5776
原创 iOS png或者jpg图片改为webp格式图片
安卓编译器Android Studio自带png,jpg格式图片转为webp格式,webp格式图片会减少很多内存,iOS Xcode没有这个功能,推荐一个在线转换的网址链接,等后面iOS代码做webP格式图片兼容时,再来写代码实现吧图片转为webp格式 (https://squoosh.app/editor)...
2019-05-10 17:46:47
1774
原创 报错 library not found for -lstdc++.6.0.9
报错 library not found for lstdc++6.0.9。是lstdc++6.0.9 不是 -libstdc++.6.0.9哦,但是解决方法应该是类似网上查了很多解决方法都没有很好的解决自己的问题,其实针对的情况有很简单的解决方法啦,我的情况是项目中没有真正依赖stdc++.6.0.9的,所以删掉引用的地方就好,主要是找不到哪里有引用 lstdc++6.0.9先看下我的遇到的...
2019-05-10 17:04:42
1271
原创 区分苹果开发者的网址(开发者网址和管理您的appid网址)及证书信息
一.管理您的AppId ID 网址: https://appleid.apple.com/#!&page=signin管理您的AppId ID这个网址可以做的操作:1.修改个人appid的帐户信息2.安全:修改appid密码,绑定手机号,双重认证开启状态等3.设备:查看曾经登录过改appid的设备4.付款和送货:可以修改初次创建appid时绑定的付款方式和送货地址信息二:苹...
2019-05-07 11:16:02
7397
原创 Mac好用的截图工具:Snipaste
公司上班电脑不允许登录微信,QQ,对于习惯用QQ截图的我,很是不方便,百度搜索mac好用的截图软件,也是五花八门,不尽人意。最后终于找到一款好用的mac版免费截图工具:Snipaste,希望可以帮到有同样问题的伙伴
2019-03-05 14:24:31
2539
转载 iOS app配置多环境变量和制作马甲包
需求一:很多公司的app都分成debug环境和release环境(多个接口域名),平时开发和测试都在debug环境,打包上线的时候才切换到release环境;需求二:公司要求制作马甲包,即在原来app的基础上,只修改app的名称,图标,LaunchImage,替换app中带有app名称的文本,并用另一个开发者账号发布,马甲包的数量不定。手动在代码里更改环境变量,替换图片肯定是不可取的,这里我们采用...
2019-03-05 13:11:34
737
原创 如何利用dsym文件定位线上问题
我们app发布之后一般拿到线上的崩溃日志,线下根据崩溃日志来进行修改代码。但有时我们抓取的崩溃日志有些具体定位不到哪个文件,哪行,这个时候利用dsym文件结合DSYMTools分析工具,可以定位到具体代码位置1.错误的日志(无法直接定位问题位置)我们定位问题的话,要主要看上图标出来的5,6,7,8,9行。其中:1和3:A05_iPhon App的名字2:0x0000000100ac75...
2019-02-14 19:03:00
899
原创 Xcode 如何添加inHouse模式
Xcode 添加inHouse模式选择项目名-右侧project-info-configration添加完之后xcode -> Product-Scheme -> Edit Scheme -> Run(或者其它任一模式)-> Info -> Bulid Configuration -> 这里就会多出一个选择模式inHouse(这个模式在打ipa包选择证...
2019-02-02 17:57:39
1321
原创 NSString的常用操作:截取
工作中字符串用到的几率还是很高的,跟中截取、拼接操作,所以记录总结一下,后续随工作需要继续更新~~1.截取1.1截取某个指定字符的前段或者后段NSString *companyURL0 = @"https://www.google.aaa.com/1234";//获取要截取的字符串位置NSRangerange = [companyURL0 rangeOfString:@"aaa"]; ...
2019-02-02 17:43:47
711
原创 git重命名本地和远程分支,stash,log常用操作
git branch -a #查看所有分支git branch -r #查看远程分支git branch -vv #查看本地分支所关联的远程分支git branch -m old_branch new_branch #重命名本地分支git push origin :old_branch # 删除老分支对应的远程分支git push --set-upstream origin new_br...
2019-02-02 14:34:42
668
1
原创 iOS11 系统App切换到后台再切换回前景状态,tableview闪屏
iOS11 系统tableview闪屏最近最项目遇到一个很奇葩的问题,百度搜索解决方案,也不对症,耽误了很长时间,所以写下自己的经历,希望可以帮到遇到同样问题毫无头绪的你问题描述:ios11 系统tableview页面,每次程序点击home键回到后台,然后再切换到前景,会闪屏,并没有出现上下错位跳动的现象,就是闪屏曲折解决问题网上搜索ios闪屏,清一色的解决方案是:tableView ...
2019-01-28 10:58:06
903
原创 xib中如何设置maskView遮罩层,让父控件半透明,子控件不透明
问题描述:用xib设置maskview半透明,但是遮罩层上面的view竟然也是半透明修改方法:如上图所示,不要在xib中直接设置Background 为 Black Color,然后Alpha设置为0.8,这个Alpha好像并不像想象中的效果这样而是要设置为:Background 为Custom,然后弹出的颜色框里面选择 RGB Sliders-HEX Color #000000...
2018-12-21 19:03:13
1002
原创 xib如何给UIView设置圆角,为何xib设置UIView边框颜色不显示
最近用xib创建view,遇到一些问题,记录下,希望可以帮到遇到同样问题的童鞋:xib为何设置UIView圆角不显示:首先上图:xib设置圆角只需要按照图中步骤添加对应Key Path最常用的Key Path:layer.cornerRadius ,注意该 key 对应 Value 的 type 应该设置为 String/Number两种类型均可(代码设置弧度为:thisView...
2018-12-21 17:51:29
1153
1
原创 commitlint+husky规范commit 日志
为了方便开发团队协作开发,commit -m 中的信息需要有个规范,方便直观的看出每次commit 目的主要说下安装步骤和commit 规范标准,有问题欢迎探讨指出~~##############################安装步骤#############################一.安装node,从Node.js官网下载对应平台的安装程序安装成功后,终端执行命令 node -...
2018-11-14 17:44:52
34909
2
原创 红包展示功能的实现,GCD timer 用法,NSDate的一些常用方法
红包展示功能的实现,NSDate的一些常用方法最近在项目中做双十一红包展示功能,看似很小的功能,但是因为之前没做过类似功能,还是有很多小知识点的1.先准备一些记录时间的属性和计时器@property (nonatomic, strong) NSDictionary *allTimeDic; //当前所在红包时间段@property (...
2018-11-06 15:48:02
274
原创 git 如何同步本地、远程的分支和tag信息
git 如何在本地同步远程分支和tag1.git如何同步本地分支与远程origin的分支问题场景:同事A创建了本地分支branchA并push到了远程->同事B在本地拉取(git fetch)了和远程branchA同步的本地分支branchA->同事A开发完成将远程分支branchA删除(远程仓库已经不存在分支branchA)->同事B用git fetch同步远端分支,gi...
2018-10-19 17:55:31
67217
2
原创 将自己的SDK上传到GitHub上并用cocoapods管理
大体分为三个步骤吧:1.github上创建一个sdk项目2.项目最好只是cocoapods(这一步可有可无)3.编辑*.podspec文件下面每个步骤详细来说下:1.github上创建一个sdk项目(这个基本应该都很熟悉啦~~)需要注意的就一点:尽量选择上add a license,否则后面没有LICENSE文件,会有点麻烦登录github官网:https://github.com...
2018-10-01 14:56:46
689
原创 git分支协作(采用变基rebase形式)
git分支协作(采用变基rebase形式),为了防止文件丢失,记录下~~有问题欢迎补充Git项目创建(添加对应rsa后):bogon:BlockTest mac$ cd 个人项目路径bogon:BlockTest mac$ git initbogon:BlockTest mac$ git add .bogon:BlockTest mac$ git commit -m "first...
2018-09-01 15:07:08
415
原创 iOS深拷贝和浅拷贝
一:概念 浅拷贝:指针拷贝,不会创建一个新的对象。浅拷贝简单点说就是对内存地址的复制,让目标对象指针和源对象指针指向同一片内存空间 深拷贝: 内容拷贝,会创建一个新的对象。深拷贝就是拷贝地址中的内容,让目标对象产生新的内存区域,且将源内存区域中的内容复制到目标内存区域中 深拷贝和浅拷贝的本质是内存地址是否相同二:各种类型的对象深拷贝,浅拷贝 1.非容器类对象(比如像NSString,N...
2018-08-01 16:53:35
3554
1
原创 字符串修饰符strong和copy的区别
1.定义两个属性@property (nonatomic, strong) NSString *stringStrong;@property (nonatomic, copy) NSString *stringCopy;情况1: 分别给这两个属性赋值NSString类型 - (void)testStrongAndCopyStr{ //情况1:给属性赋NS...
2018-08-01 15:32:12
1441
原创 iOS多线程:NSOperation
一:简介 1.简介 NSOperation是一个抽象的基类,表示一个独立的计算单元,可以为子类提供有用且线程安全的建立状态,优先级,依赖和取消等操作。系统已经给我们封装了NSBlockOperation和NSInvocationOperation 这两个实体类。2.执行和监听操作 NSOperation调用start方法即可开始执行操作,NSOperation对象默认按同步方式执行,也就...
2018-07-30 16:00:06
177
原创 iOS 多线程GCD
为了了解、记忆更深刻,记录下~~ 一:什么是GCD GCD本身是苹果公司为多核的并行运算提出的解决方案。GCD在工作时会自动利用更多的处理器核心,以充分利用更强大的机器。GCD是Grand Central Dispatch的简称,它是基于C语言的。如果使用GCD,完全由系统管理线程,我们不需要编写线程代码。只需定义想要执行的任务,然后添加到适当的调度队列(dispatch queue)。GCD...
2018-07-28 14:25:30
1298
原创 performSelector 注意问题及原理
1.首先使用performSelector是要特别注意内存泄漏问题,下面代码演示: 创建一个控制器ZWWTestThreadViewController,从上个控制器push到该控制器,ZWWLog的宏定义:#ifdef DEBUG#define ZWWLog(fmt, ...) NSLog((@"%s [Line %d] " fmt), __PRETTY_FUNCTION__, __...
2018-07-26 11:17:18
3523
转载 oc中 +load方法的深层理解
因为 ObjC 的 runtime 只能在 Mac OS 下才能编译,所以文章中的代码都是在 Mac OS,也就是 x86_64 架构下运行的,对于在 arm64 中运行的代码会特别说明。写在前面文章的标题与其说是问各位读者,不如说是问笔者自己:我真的了解 + load 方法么?...
2018-07-25 22:21:15
4068
3
原创 oc中 load,initialize,init方法对比总结
首先代码展示吧,后面也会附赠demo代码链接1.定义测试类TestClass //为了方便打印,先在宏定义文件里面定义ZWWLog#ifdef DEBUG#define ZWWLog(fmt, ...) NSLog((@"%s [Line %d] " fmt), __PRETTY_FUNCT
2018-07-25 18:19:46
1932
原创 @property定义的变量,默认的修饰符是什么?
关于ARC下,不显示指定属性关键字时,默认关键字: 1.基本数据类型:atomic readwrite assign 2.普通OC对象: atomic readwrite strong一.线程安全的 atomic 原子:默认 nonatomic 非原子性atomic原子性 :默认 多线程存在安全隐患: 一块资源可能会被多个线程共享,也就是多个线程可能...
2018-07-25 17:07:34
5172
原创 如何通过蒲公英实现iOS版本自动提示更新,省去频繁打内测版本发链接给同事老板
一:xcode项目中需要做的操作 1.代码中设置bulid号 2.在xcode中添加指定脚本(确保每次打版bulid号会自动+1,这样可以确保每次打包的bulid号>蒲公英上曾经打版的号)if [ "$CONFIGURATION" != "Debug" ]thenbuildNumber=$(/usr/libexec/PlistBuddy -c "Print CFBundl...
2018-04-10 18:09:19
3862
原创 ios App支付宝开放平台申请支付宝支付具体步骤
本文章主要介绍支付宝开放平台接入支付宝支付的过程,不涉及支付宝支付sdk代码的导入1.支付宝支付平台注册账号2.资料登记3.企业认证选择法定代表人支付宝验证(通知法人支付宝登录认证)...
2018-02-27 14:02:47
2836
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人