- 博客(257)
- 资源 (17)
- 收藏
- 关注
原创 使用NSURLSession简单做一个上传图片的方法
通常上传文件、图片。使用http请求的POST方法,在body体中还有一些固定的格式。iOS SDK中的NSURLSession是一个heigh-level API,由于上传图片是一次性请求,实现起来还是很方便的:下面是关键代码,一个函数即可可以实现:
2017-04-27 15:45:56 4386
原创 【精】iOS知识树,知识点(包括对象、Block、消息转发、GCD、运行时、runloop、动画、Push、KVO、tableview,UIViewController、提交AppStore)
本文旨在总结iOS知识网络,知识点,该知识网络罗列出常见UIKit、Foundation的对象特点和一些使用经验,可以看成是一本书;文本编辑采用树的形式,对知识点进行罗列,并标注一些使用经验(★)希望对初学者有用或给一些解决疑难杂症者提供思路;某些知识点会深入探讨;通过总结希望站在一个较高平台的角度全观Objective-C。知识树中有些是原创文章,有些则是转载网络上iOS大神的文...
2016-02-29 00:02:37 13782 9
原创 Unicdoe【真正的完整码表】对照表(一)
真正完整的Unicode码表,其中CJK = Chinese-Japanese-Korean 下面列举了一些相关的索引。查看完整索引到:http://blog.csdn.net/xjgprs/article/details/57805742E80-2EFF:CJK 部首补充 (CJK Radicals Supplement) 2F00-2FDF:康熙字典部首 (Kangxi Ra
2013-06-07 22:13:26 679150 7
原创 Unicdoe【真正的完整码表】对照表(二)汉字Unicode表
注意:下面这两段是代理区。即第1——16平面的间接表示,四个字节的汉字就在这里表示D800-DBFF:High-half zone of UTF-16 DC00-DFFF:Low-half zone of UTF-16 本篇中包含了所有常用汉字27973个,剩余汉字使用代理区标识欢迎查看字符编码相关博客专栏比如:由iPhone emoji问题牵出的UTF-16编码,UTF-8编码探究
2013-06-07 11:20:23 1906305 17
原创 UIStackView入门使用两个问题
项目中横向一排元素,竖向一排元素,可以使用UIStackView。UIStackView的原理不做介绍,这里主要讲两个初次使用容易出现的两个问题。首先创建一个stackview 向stackview中添加view默认情况下,stackview中的元素是填满整个stackview的(fill),属性是distribution。其他的axis,alignment比较好理解。从结果上看,如果使用frame,stackview会依赖元素自身大小布局,比如皇冠的icon frame是20*14.5。但是皇
2023-09-10 21:27:35 754
原创 UICollectionView 的 scrollToItemAtIndexPath 方法失效?
项目中某个tableview中的cell添加了一个UICollectionView,并使用timer实现横滑自动滚动。采用数组个数乘以100(生成很长的一个collectionview),然后定位到50个位置。避免手动滑到头或者尾。写完代码发现,这行代码 [self.collectionView scrollToItemAtIndexPath:nextIndexPath atScrollPosition:UICollectionViewScrollPositi...
2021-07-30 23:38:04 1126
原创 2021年3月31日之后,APNs将不再支持传统二进制协议(解决沙盒 push发送失败)
之前的Pusher,Smartpush,以及本博客中php写的代码都失效了。可以使用Knuff客户端发送pushAPNs will not support legacy binary protocol as of March 31, 2021.The HTTP/2‑based Apple Push Notification service (APNs) provider API lets you take advantage of great features, such as a...
2021-07-20 15:04:06 742
原创 Found an unexpected Mach-O header code: 0x72613c21
打商店包时候遇到这个问题。普遍的解释是动态库没有选择embed&sign.或者静态库选择了这个。今天遇到另外一个可能,应该比较少见:framework中嵌套framework。比如:
2021-06-01 19:25:40 629
原创 主线程 -[__NSDictionaryM objectForKey:] SEGV_ACCERR 类型的crash
项目中遇到一个偶现crash,如图:按道理-[__NSDictionaryM objectForKey:] 即便dict是nil或者key是nil都不会crash啊。查阅资料:有同学反馈NSMutableDictionary is not thread safe。先在demo中模拟一下场景:+ (NSMutableDictionary *)cacheDictionary{ static NSMutableDictionary *instance = nil; static.
2021-03-21 00:13:51 2351 3
转载 iOS常见崩溃以及总结
【转载】作者:乳猪啸谷链接:https://juejin.im/post/6844903688608153614用户在使用App的过程中,经常遇到闪退的情况,体验不太好,本文尝试探索引发闪退的原因,以及在遇到crash的情况下,尽可能的保持程序运行,并及时上报错误。一、crash类型1.OC层面的crash1.1 普通类型NSInvalidArgumentException:非法参数异常,传入非法参数导致异常,nil参数比较常见。 NSRangeException:下标越界导致的异常
2020-11-06 17:50:48 3823
原创 NSNotificationCenter 如果name是空?是什么效果?
典型的NSNotificationCenter使用方法:[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(reachabilityChanged) name:kReachabilityChangedNotificatio
2020-05-11 10:15:08 566
原创 [UIView animateWithDuration:completion:]被卡主,延迟执行了completion:回调
视频项目中遇到一个bug,横屏播放视频时候,转到小屏后。页面卡主了,点击页面没效果。但是点击播放器可以响应。debug时候查看UI层级,发现:在转屏过程中,转屏动画没有执行完(动画的completion:)没有执行。导致一些View设置没有得到执行。 断断续续,查了几天发现是视频弹幕的动画引起的。这里写一下伪代码:[UIView animateWithDuration:^{ 暂停弹幕动画} completion:^{ View的设置}];弹幕动...
2020-05-11 10:03:33 2017
原创 iOS Hook系统类的办法,比如:UITextSelectionView
由于UITextSelectionView是系统的私有类,连头文件都没有。那么我们怎么hook它的方法呢。比如初始化方法initWithInteractionAssistant://步骤一 Method originEat = class_getInstanceMethod(NSClassFromString(@"UITextSelectionView"), ...
2020-04-22 17:13:16 1765
原创 当自己视频APP,遇到别人音频APP后台播放音频时候
当别家音乐APP播放音乐,打开自家视频APP(虽然没有播放视频),但音乐app的音频却暂停了(如果是钉钉语音会议这种情况,会自动退出语音会议)。 查了资料:这是音频打断处理问题,举个例子: 第一种情况:比如闹铃打断的情况。先是AVAudioSessionInterruptionTypeBegan,闹铃结束调AVAudioSessionInterru...
2020-04-13 17:56:48 1506
原创 UISlider 延迟调用touchesBegan,延迟调用valueChangeHandle。delay?
今天遇到一个体验问题。播放器的UISlider的thumbImage在拖拽后不是立即响应,而是等了0.3或0.5或1秒后才响应。(如何扩大thumbImage的响应区域,可百度)。如图所示: 虽然hitTest已经是UISlider了,但是,仍然登录0.x秒才执行touchesBegan:和valueChangeHandle:方法:2020-04-08 23:...
2020-04-08 23:57:34 643
原创 iOS端使用DSA加密
iOS 使用RSA就不说了,系统支持RSA。但是DSA只有mac os支持。所有APP需要DSA签名就需要借助openSSL库了。openSSL库有人编译好了,也可以自己编译(https://github.com/x2on/OpenSSL-for-iPhone) 第一步、下载上面的github中的代码。cd 到OpenSSL-for-iPhone-master工程路径输入命令:....
2019-11-21 19:40:48 828 4
原创 OC 对同一个方法进行多次交换(Method Swilzzling)
Method Swizzing主要用于在运行时将两个Method进行交换.例如:交换实例方法: Method originMethod = class_getInstanceMethod(target, originalSelector); Method swizzledMethod = class_getInstanceMethod(target, swizzledSele...
2019-10-21 13:19:25 1868
原创 UICollectionView 刷新后空白,cell的hidden全是yes自己隐藏了。
网上也有同学遇到此类问题。我这边出现空白的原因是:本来collectionview的contentSize比frame小。中间手动将其contenSize改为和frame一样大。为了能够上下滑动(当时不知道有一个属性self.collectionView.alwaysBounceVertical = yes可以支持垂直方向滑动
2019-08-28 11:13:22 2911
原创 ios 通过代码调整焦距
我们在自定义相机时,若要实现镜头变焦,也就是推近或者拉远焦距,iOS 7以后的实现:可以通过修改AVCaptureDevice的 方法rampToVideoZoomFactor withRate 来实现镜头变焦,带有动画(本质上是修改AVCaptureDevice的缩放系数videoZoomFactor),代码如下(通过手势缩放)://最小缩放值- (CGFloat)min...
2019-08-25 22:38:42 3419
原创 iOS APP在前台收到push,弹出系统框
在iOS9以前,APP前台可以收到push的数据,但是没有UI展示,需要APP自己展示。iOS 10以后,苹果统一使用UserNotifications ,以前的API都被标为弃用了。在appdelegate 中添加代理和代理方法。#import <UserNotifications/UserNotifications.h>- (BOOL)applicati...
2019-06-21 13:09:19 4345
原创 【技巧】reloadSection和relaod方法。cell复用规则不太一样
reloadSection和relaod方法。复用规则不太一样:- (void)reloadSections:(NSIndexSet *)sections withRowAnimation:(UITableViewRowAnimation)animation NS_AVAILABLE_IOS(3_0);当调用[tableview reload]的时候,当前展示的cell,其实是可以复用...
2018-11-27 20:40:04 2625 3
原创 事物分段处理的好处,字符串处理
今天处理一个十六进制色值和alpha的问题,忽然想到。事物分段处理,逻辑容易的多。这也让我想起了快速排序现在有一个字符串@"#ffffff,0.2"或者@"#ffffff"这种无alpha默认是1.0,程序要将其解析成一个色值和alpha值。老的处理,OC代码片段+ (UIColor *)colorWithHexAlphaString:(NSString *)hexString {...
2018-10-25 09:53:12 654
原创 Mac 分卷压缩,解压。纯命令行实现
Mac 分卷压缩,解压。纯命令行实现,不需要解压软件。一、 分卷压缩 【前提】:把文件夹先压缩一次。生成original.zip,然后对original.zip进行分段压缩。zip - largefile | split -b 500k -a 3 - file.ziplargerfile替换为original.zip,后面的参数意思是500k一个卷,以file.zipxxx...
2018-10-24 10:23:13 12738 1
原创 迁移项目到新git地址
1. 创建一个新的git地址,创建自己ssh key(不是Deploy key)2. 进入旧工程目录3. 通过下面的命令git initgit remote set-url origin #新git地址,git@开头git push --allgit push --tag这样新的git看起来跟旧的工程一模一样。...
2018-10-24 10:22:34 2266
原创 JS的原型链,这个图你没见过
想到Objective-C有个isa指针,对象的isa指向类,类的isa指向元类,元类的isa指向自己。正是有了isa指针,才有了强大的runtime功能。那么,前端技术js也有自己的指向关系,这里借用《JavaScript高级编程》中的描述:每个构造函数都有一个原型对象(prototype) 原型对象都包含一个指向构造函数的指针(constructor) 实例都包含一个指向原型对象的...
2018-10-15 14:01:36 601
原创 NSNotification 也有”消息转发“,会不会崩溃呢?
NSNotification与多线程官方文档:In a multithreaded application, notifications are always delivered in the thread in which the notification was posted, which may not be the same thread in which an observer re...
2018-09-26 22:51:21 495
原创 用iPhone查看pc电脑上写的html(Mac电脑Charles)简单版
对于客户端同学开发来说,写一段代码想在真机上看看,是非常容易的。 那么在这么一个大前端的环境下,客户端开发想写点html和js代码,又想在手机上看看效果,怎么办呢? 需要以下几个步骤:大体流程:1. 安装webstorm,并设置webstorm,2,安装Charles,并设置charles。3. 设置手机代理。1. 电脑端安装websto...
2018-09-10 17:30:10 2921 1
原创 iOS配置证书:Provisioning profile "xx_Distribution" doesn't include signing certificate "iPhone Developer
正常情况下,顾名思义:provisioning文件没有包含xx证书。但是,你再三检查,这个provison包含这个证书呀。甚至重新生成provision文件。结果还是不行?重启XCode,重启Mac都不要用。两个小时过去了。 那么看看是不是下面这个情况:所以,问题就是:证书重复了。或者是创建了多个名字一样的证书。办法就是把他们都删了。注意:在钥匙串中,...
2018-08-29 11:37:09 20107 3
原创 iOS 启动就crash,难复现。最后确定是MobFoundation问题
最近iOS版本客户端崩溃率在1.5%左右,排名最高的是这个栈。当然,fabric已经说明,是内存错乱造成的,崩溃栈已经不准确了。没有复现导致开发很难查这个crash(根据栈提示,好像是block的问题,其实不然)#0. Crashed: com.apple.main-thread0 libobjc.A.dylib 0x1843c57f4 objc_o...
2018-05-08 16:50:03 3029 10
原创 使用git log功能对比两个分支代码变动,增加,删除行数。
git 提供了对比两个版本之间代码改动功能,即可以列出改动多少行代码。比如我们工程,得出的结果是:5.9.5 - 6.0.0 added lines: 4728 removed lines : 2610 total lines: 7338下面说一下步骤。该功能依赖gawk,需要下载包并安装:【一、准备gawk包】 1. 下载gawk 官网 或者 http://download.chinaunix....
2018-02-12 10:21:24 3980
原创 iphone连接mac 的ipv6环境,搭建过程。
需要一个手机A用于共享(只能usb)网络给mac,然后mac设置一下,共享ipv6网络给手机B,我们可以在手机B上调试APP。具体步骤如下:1. 手机A关闭wifi,打开个人热点,此时会弹出来对话框选择用usb还是wif。此处需选择“仅USB”。注意:手机A必须有卡,因为要用它的流量。2. 电脑上代网络设置,看看一下iphone usb是不是已经连接上。此时可以关闭mac的wifi,这样iphon
2018-01-29 11:21:30 3902 1
原创 [经验]Class MediaTransCoder is implemented in both One of the two will be used. Which one is undefined
可以断定是客户端的问题,不是framework的问题。查了很久,最后还是根据控制台输出,找到了问题所在:Class MediaTransCoder is implemented in both /private/var/containers/Bundle/Application/7D09FAA4-C843-44D9-89ED-132F614B5F5D/FSVideo.app/Frameworks/MediaTransCoder.framework/MediaTransCoder (0x10675c6d0
2017-11-30 14:18:47 7716
原创 masonry实现不规则图片布局【图】
直接上代码,思路是:将那一推图片分为四列,每一列是上下对齐的,不要使用按钮。UIImageView+UILabel即可
2017-11-01 11:40:56 1986 2
原创 https 不支持ip地址?
的确不支持。为啥呢?拿百度地址为例。访问百度的ip地址,就提示证书不信任,不匹配。原因是:一般来说证书都是以域名为标示的,跟访问的ip地址肯定不匹配。如图
2017-10-19 10:27:13 22752 4
原创 guideImageView.frame = videoPlayerVC.videoPlayerView.bounds;竟然frame不一样
结果guideImageView.frame和videoPlayerVC.videoPlayerView.的frame竟然不一样。这么一句赋值,竟然等号左边的不一样。颠倒了90°。查了资料后发现原来是view2有个transform啊。
2017-09-30 11:46:49 759
原创 cell 上下非对称margin新方式
UI设计师总是会设计出一些完美的视觉,但有些完美视觉效果需要特别的处理。前两年总听到一句话:一个漂亮的界面背后总是有一堆肮脏的代码。 先看一个有问题的效果。小图cell和大图cell之间的margin是12.5p,而两个小图cell之间的margin是25p.这是因为。cell的contentView在cell中是居中的,上下margin都是12.5。最终是这个效果:
2017-08-31 20:05:42 1069
原创 [技巧]UIView的hidden和alpha的妙用
现状:暂停和loading都是通过hidden来实现显示和隐藏的。这两个的显示有各自的逻辑。暂停按钮显示5秒消失。loading图根据网络状况出现,消失。解决原则是:loading视图要比暂停优先级高,即loading会踢走暂停按钮,loading消失,暂停还需要出现(如果有的话)。那么,既然无法控制hidden,我们可以利用另外一个属性alpha。这样即便alpha=1,也不影响视图的显示结果。写一个伪代码:
2017-07-13 12:17:15 3999
树tree、动态数组dyArray、hashMap、拼图算法
2014-08-15
core-data和sqlite3性能对比demo
2013-06-18
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人