iOS
__future__
北信科大2011级菜鸟。
2011.09 ~ 2017.03 ->BJ.
2017.03 ~ 2018.07 ->SZ.
2018.07 ~ 至今 ->BJ.
展开
-
iOS中__attribute__的使用
通过__attribute编译期指令将数据注册至Mach-O指定段的section,可以提供更灵活的注册方式,避免了非必要依赖。通过这种方式不仅仅能够在任何地方注册string,甚至可以注册C函数。两种形式,鉴于OC中string极高的灵活性能够实现绝大部分需求(比如:转成protocol、class、selector等),因此实现并未支持注册C函数。下面的库提供了注册和读取内容的简单方式,主要支持。原创 2023-07-19 16:40:33 · 563 阅读 · 0 评论 -
pod库报C++头文件file not found问题
记录个问题:项目中引入引入MLNKV后,编译报错。以下为修改了MLNKV的podfile的结果,podfile中打开了use_frameworks!这是个找不到c++头文件问题,经过和项目对比发现只有在podfile中使用use_frameworks!会引起此现象,Google查阅到这篇文章,表明原因是暴露了C++头文件,只需要在podspec中把包含C++头文件的header文件设置为private,或者将该类头文件从public header中移除即可。因外部不需要访问MLNKVBase等,因原创 2021-12-25 21:01:51 · 2706 阅读 · 0 评论 -
利用runtime获取工程内的所有类
【记个代码】不包含系统类// 获取工程里的所有类- (NSArray <NSString *>*)getResourceClassNames { NSArray *(^block)() = ^(const char *imageName) { unsigned int classCount; const char **classes = objc_copyClassNamesForImage(imageName, &classCount);原创 2021-12-14 11:38:23 · 2094 阅读 · 0 评论 -
iOS 准确获取app进程启动时间点
debug环境下打印启动耗时环境变量设置EditSchema -> Run -> Arguments -> Environment Variables添加DYLD_PRINT_STATISTICS和DYLD_PRINT_STATISTICS_DETAILS值均为1其中DYLD_PRINT_STATISTICS打印信息如下:Total pre-main time: 203.41 milliseconds (100.0%) dylib loading time: 1原创 2021-04-12 14:47:31 · 1600 阅读 · 0 评论 -
Mac终端显示git分支问题处理
百度一下具体操作,一般是在.bashrc中添加一段代码,然后通过source命令执行该文件。今天拿到一台别人用过的Mac,遇到了不生效的问题。解决方案如下:通过echo $0查看shell 版本,如果输出不是/bin/shell说明你也中枪了修改系统默认shell chsh -s /bin/bashsource ~/.bashrc重启终端...原创 2021-01-23 11:02:54 · 362 阅读 · 0 评论 -
iOS 获取系统音量大小
#import <AVFoundation/AVFoundation.h>AVAudioSession *audioSession = [AVAudioSession sharedInstance];CGFloat currentVol = audioSession.outputVolume; //@property (readonly) float outputVolum...原创 2018-03-01 16:38:27 · 7928 阅读 · 1 评论 -
iOS block之循环引用
此篇博文用到了上一篇的一些知识点,有需要了解可以点此链接《iOS block之三种block》前言首先还是从一个大家耳熟能详的循环引用的条件说起:有3个对象A、B、C,当A强引用B,B强引用C,C又一不小心强引用了A,就出现了循环引用。 举个常见的栗子如下: 上面的栗子中,A代表一个vc,B代表一个view,它是vc的property,C是个block,它是view的property。 A强引原创 2017-09-10 22:37:56 · 1292 阅读 · 0 评论 -
iOS 判断两个时间是否属于同一时期
判断两个时间是否属于同一天,同一周,同月原创 2018-01-19 11:38:46 · 1443 阅读 · 0 评论 -
iOS block之三种block
本篇博文主要根据block在内存中存在的位置介绍block的种类以及其生命周期等特性原创 2017-09-10 18:04:02 · 2710 阅读 · 2 评论 -
iOS UILabel字符串点击响应
最近接到一个需求,给一段文字,可能需要对文字中的某个词语添加交互事件,触发后进行名词解释。设计如下: 有网友说用text view,把需要交互的字符当作url处理,可这样以来,必须打开text view的selectable属性,这不是我想要的。于是考虑用UILabel,因为之前用过TTTAttributedLabel。TTT这个东西可以根据你的配置自动去做正则,找出你需要匹配的电话号码、url等原创 2018-02-01 11:29:28 · 4808 阅读 · 0 评论 -
iOS 极其简单的夜间模式实现方案 附开源库
前言开发过程中也许会遇到需要切换不同色系皮肤模式的需求,例如夜间模式切换,股票红涨绿跌的切换等。 单纯的从技术角度讲,这个功能实现起来并没有技术难点,最基本的做法是切换模式的时候抛个通知,VC或View收到通知后更改颜色图片等。虽然技术不难,但是实现难度相对较大,毕竟很琐碎,而且平白增加了很多控制代码,严重影响代码的可读和可维护性。带着把对系统的影响降到最低的目标,我们想到了利用...原创 2018-04-20 17:08:40 · 2185 阅读 · 1 评论 -
用系统方法实现网易云音乐VC翻转动画
翻转动画仅仅是VC切换动效的一种,通过此方法可以方便的实现VC切换的各种动效。思路: MasterVC作为根视图控制器 AAVC和BBVC之间切换均通过MasterVC进行。 MasterVC作为视图控制器的容器,AAVC和BBVC作为子控制器放在容器中类似网易云音乐VC翻转的核心代码: [self addChildViewController:self.bb]...原创 2018-05-17 18:32:00 · 716 阅读 · 0 评论 -
iOS PanGesture和ScrollView的手势冲突解决方案
之前撸k线,k线视图作为一个子控件被放在了ScrollView上,由于k线有个左右滑动的手势,于是使用了UIPanGestureRecognizer,这导致了在K线上上下滑动时ScrollView没有任何相应,在交互上不太友好。因此本内容主要是为了处理UIScrollView的子视图上添加UIPanGestureRecognizer后,导致上下滑动该子视图时UIScrollView无法跟随上下...原创 2018-05-15 11:19:46 · 4207 阅读 · 1 评论 -
ios app获取LaunchImages中的图片
遇到一个需求,读取LaunchImages中的图片作为一个VC的背景图,搜罗一圈没找到靠谱的解决方案。 下面的代码可以解决,暂时还没有遇到问题,只是感觉不太好。如果有更好的方案,请留言告知,在此先道一声感谢! NSDictionary * infoPlist = [[NSBundle mainBundle] infoDictionary]; NSArray * arr ...原创 2018-05-25 18:03:49 · 568 阅读 · 0 评论 -
OC 优先级排序方法
最近比较忙,忙着处理k线相关的各种需求,三个工程一起撸,好不酸爽~排序,大家都用过,这里要介绍一个大多数人都不知道的方式,先买个关子——这种排序方式很牛。它之所以牛,是因为它完美的且优雅的处理了包含潜在优先级条件的排序。 简单的几行代码就可以实现对数组按照条件优先级进行排序。 比起冒泡,比起block方便得不止一星半点。栗子如下,一看便懂^o^- (NSMutableArray *)sortAr原创 2017-11-23 20:34:59 · 2167 阅读 · 0 评论 -
iOS title view不居中的处理办法
这篇文章没有代码,但相信看完之后您就会轻松的解决您所遇到的问题。做iOS开发的朋友们可能会遇到自定义导航栏上的left item,right item和title的情况,这种情况下容易出现一个问题,就是title不局中。在我解决此问题之前也在网上搜了很多次,但是一直没有遇到比较好的解决办法,因为几乎所有的楼主都是说,拿屏幕宽度减去这个,再减去那个,这种方法简直傻子都能想出来,所以参考意义不大。 本原创 2017-08-20 21:22:45 · 2049 阅读 · 1 评论 -
iOS TTTAttributedLabel复制
对于试图类的第三方控件,一般情况下我是不喜欢使用cocoapods添加的,主要原因就是修改十分不便,稍一不慎就一朝回到解放前了。 TTTAttributedLabel是一个我特别喜欢的第三方label控件,可以替换UILabel使用,通过它可以很方便的计算高度,识别内容中的地址、链接、电话等内容,只要设置代理并实现相关delegate方法即可支持相关的单击、双击、长按操作。 这篇文章并不是主要介原创 2016-08-28 22:06:57 · 1716 阅读 · 0 评论 -
iOS控件禁用系统方法
- (BOOL)canPerformAction:(SEL)action withSender:(__unused id)sender{ //有很多系统方法,此处分别打印出来 NSLog(@"<< action: %@ >>",NSStringFromSelector(action)); //此处为了容易理解禁用了系统的copy:方法,看懂了之后原创 2016-08-07 17:34:08 · 811 阅读 · 3 评论 -
iOS 教你写通用的description方法
/** * @property (readonly, copy) NSString *description; * description是NSObject的一个只读属性,对于一般的属性都会有getter和setter方法,但是readonly的属性顾名思义就只有getter方法啦。 * 当你在XCode控制台使用po命令打印一个对象的时候,如果没有重写description方法,往往打印出的原创 2016-08-12 23:05:13 · 2909 阅读 · 2 评论 -
iOS cell高度自适应 - 教你写出优雅的table view
作为一个iOS开发者,自然少不了了table view打交道,table view中最令人头疼的是各种cell的高度计算了,虽然技术上并不难,但是对于自定义cell来说一旦控件比较多,计算起来就会很麻烦,会出现很多和height相关的代码,万一稍有偏差,就要小心老板和测试大虾们鄙视的小眼神了。 今晚呢,现在已经是凌晨了~ 下面就为大家介绍一种方法,让你的cell彻底丢弃HEIGHT这玩意儿~在正原创 2016-12-17 01:49:20 · 7091 阅读 · 0 评论 -
iOS -setValue:forKey:和-setObject: forKey区别
首先看一下下面的代码,请问程序是否会崩溃?如果不会,那么输出结果应该是什么?NSMutableDictionary * dic = [@{@"name":@"小明"} mutableCopy];[dic setObject:@"Men" forKey:@"gender"];[dic setValue:nil forKey:@"gender"];NSLog(@" -- %@ -- ",dic);原创 2017-03-22 10:48:42 · 2937 阅读 · 2 评论 -
iOS 获取视频时长和大小
这里说的视频并不是相册中的视频,而是保存在你app沙盒中的视频文件//记得导入AVFoundation框架#import <AVFoundation/AVFoundation.h>xxfile.h/** * @method * * @brief 根据路径获取视频时长和大小 * @param path 视频路径 * @return 字典 @"size"--文件大小原创 2016-09-20 14:28:50 · 28305 阅读 · 1 评论 -
我的iOS开发经验总结
软硬件环境 首先把软硬件环境配置妥当,Xcode配置好自己喜欢的字体,颜色,当然还有快捷键。 软件环境: 其他必不可少项: - Cocoa pods- 管理第三方开源库 - Source Tree(如果你有玩git的话,可以用它来查看分支和提交记录啥的) - Visualjmon和VisualXML(做网络开发前测试接口工具) - Datum Free(用于玩转数据库)原创 2017-03-15 22:57:28 · 606 阅读 · 0 评论 -
iOS 聊天输入框跟随键盘运动动画实现
在上家公司做项目的时候,布局使用的是Masonry,常用的位置变换的动画就是约束动画啦,也就是更新某一控件的约束之后在UIView 的animationWithDuration:animations:方法中调用该控件的layoutIfNeeded方法。 诚然这种效果非常一般,动画一般是线性的,也就是说动画的UIViewAnimationOptions是UIViewAnimationOptionCu原创 2017-03-24 21:15:22 · 4182 阅读 · 1 评论 -
iOS KVC-对象初始化赋值的神级技巧
网络请求之后最重要的一步就是把字典数据转化成类对像了,这一步很简单,但通常也异常繁琐,因为为了使程序健壮,我们首先会判断字典中是否存在这个key对应的value,如果存在则赋值,不存在则跳过。此篇文章将给出一个比较简单的初始化类对象的技巧,应用场景是最常见的通过字典数据初始化类对像。原理是通过KVC提供的- (void)setValuesForKeysWithDictionary:方法达到快速初始化原创 2017-07-06 00:21:57 · 837 阅读 · 0 评论 -
iOS 设备型号对照表
// *** other ***"i386" "Simulator" (模拟器)"x86_64" "Simulator" (模拟器)// *** iPhone ***"iPhone1,1" "iPhone 1G""iPhone1,2" "iPhone 3G""iPhone2,1" "iPhone 3GS""iPhone3,1"原创 2017-07-05 14:02:19 · 3009 阅读 · 0 评论 -
iOS 使用UICollectionView实现轮播图
一般来说实现轮播图的基础控件有两个,UIScrollView或UICollectionView,二者选一,我更愿意用UICollectionView,至于原因,读者们发挥想象力吧,我只是在看轮播图的时候第一个就想到了UICollectionView,仅此而已。既然第一个想到的是UICollectionView,那它对我来说应该就是最合适的。思考一下下面的问题,然后撸代码吧。 问题1 怎样原创 2017-09-03 18:09:22 · 3981 阅读 · 0 评论