自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Jamison Fan的博客

iOS开发日志

  • 博客(38)
  • 收藏
  • 关注

原创 开发中最全网络相关内容

iOS中网络相关内容声明:部分图片来源于网络,有些内容也来自各个平台老师讲解的视频,部分内容来自《计算机网络》这本书中,除去参考其他博客链接外,其他部分不作出参考链接来源展示,如有相关原创博客有雷同,联系我附上出处链接,尊重原创作品,本博文不作商业用途,只是加上自己的理解总结大神们的精华,便于广大的开发者查找整体目录网络中的7层模型应用层的HTTP、HTTPS对称加密,非对称加密,混合加密网络层中的IP协议IP数据报首部概述传输层中的TCP与UDP协议DNS解析建立连接流程iOS中从发

2020-05-28 17:35:43 1137

原创 C 中结构体内存对齐规则

C语言中结构体内存对齐规则对齐规则:内存偏移为该数据类型的最小整数倍总体占用内存为结构体中最大数据类型的整数倍举个????:首先,要搞清楚每一种数据类型占用内存为多少,在这里,是针对64位Linux(macOs)为例的NSLog(@"char:%zd",sizeof(char));NSLog(@"double:%zd",sizeof(double));NSLog(@"long:%zd...

2019-12-15 23:49:40 246 1

原创 Mac下安装Homebrew curl: (7) Failed to connect to raw.githubusercontent.com port 443: Connection refuse

安装Homebrew中遇到的问题报错信息:curl: (7) Failed to connect to raw.githubusercontent.com port 443: Connection refused找了很多帖子,有很多解决方法,我之前也找过很多解决方案,有的说访问https://raw.githubusercontent.com/Homebrew/install/master/install这个网址看看能不能打开,能打开就把里面的内容拿出来,手动执行,也没讲明白怎么拿出来,而且我打开

2020-06-21 22:36:01 904

原创 一些常用排序算法的实现(C语言版)

一些比较常用的排序算法(C语言)插入排序选择排序归并排序堆排序计数排序快速排序插入排序算法分析从第2个数开始,与之前第一个数比较,如果小于第一个数,那么将第一个数后移,同时设置临时变量保存第二个数,将第一个数设置为第二个数依次类推,当比较到arr[i]时,那么将arr[i]与arr[i-1]个数相比较,如果第i个数小于第i-1个数, 那么将第i-1个数后移,同时,与第i-2个数想比较…如果第arr[i-1]个数>arr[i-2]个数,跳出循环,同时将保存的第i个数插入到

2020-05-25 21:07:47 386

原创 iOS Object-C中类对象的本质

该内容仅供自己学习记录,前前后后也积累了好多有关Objective-C的东西,今天偶然看到一个有关MJ的视频,特此记录一下一个NSObject对象占用多少内存字节首先回答这个问题,要分为两部分因为对象本质是个结构体,里面有isa指针指向自己所属的类(类的isa指针指向元类,元类的isa指针指向基类的meta-class对象),总归是个指针,那么,它占用的自己数是8(64bit位环境下)个字...

2019-12-30 23:24:24 280

原创 关于OC与Swift混编过程中 “xxxx-Swift.h”未找到的问题

关于OC与Swift混编过程中 “xxxx-Swift.h”为找到的问题在对OC与Swift混编中,加了3个target:但是在混编过程中,某两个Target 提示找不到 “xxxxx-Swift.h”在网上找了很多资料,说“xxxx-Swift.h”名字必须与工程名一样,于是乎加了3个预编译宏,区分:#if TPELD_Enterprise#import TPELD_Enterpri...

2019-12-13 10:34:44 1992 1

原创 有关AVAsset获取出来的视频宽高不正确的问题

通过AVAsset 获取视频的宽高时,遇到了一个问题,获取出来的宽高都是一样的,不管横竖屏。搜索了大部解决方法: AVAsset *asset = [AVAsset assetWithURL:url]; NSArray *tracks = [asset tracksWithMediaType:AVMediaTypeVideo]; if([tracks count] > 0...

2019-06-03 16:28:08 2602

翻译 Mac 磁盘剩余空间不足清理 (主要是针对iOS开发Xcode缓存清理)

Mac 磁盘剩余空间不足清理 (主要是针对iOS开发Xcode缓存清理)电脑256的ssd,会比较小,除了我们平时清理DerivedData,其实还有一部分空间可以释放,大到40多GB.删除指数:(5星排行)删除指数(5星)只要重新运行Xcode就一定会重新生成,而且会随着运行程序的增多,占用空间会越来越大。删除后在重新运行程序可能会稍微慢一点,建议定期清理。路径:~/Libra...

2019-04-11 11:50:29 3108

原创 ios 微信逆向部分

一、砸壳方法(转载注明出处)准备工作:越狱的手机(必须的)dumpdecrypted (砸壳使用)class-dump (导出砸壳后的二进制包的头文件)Cycript(Cydia)(在越狱手机的越狱市场下载,安装)adv-cmds(Cydia)(在越狱手机的越狱市场下载,安装)OpenSSH(Cydia) (在越狱手机的越狱市场下载,安装)具体实现步骤首先在APP...

2018-09-13 13:36:09 3000

原创 KVO/KVC原理

KVC/KVO原理KVCKVC访问属性时尽可能尝试使用存取方法,当KVC访问属性时,它内部其实做了很多事:以一个属性icon为例首先查找模型中有没有setIcon方法,如果有有,直接调用[self setIcon:dict[@"icon"]];如果找不到set方法,直接寻找有没有icon属性,如果有,就直接访问模型中icon = dict[@"icon"];如果找不到ic...

2018-04-23 14:33:25 1153

转载 最新版的CocoaPod安装(Xcode 8.3 OS10.12.5)

跟新最新的新系统后,发现原来的Pod install 失效,特意找了一篇自认为还不错的帖子,转过来的,尊重原创:来源原文第一步:安装rvm,不管需不需要升级ruby,rvm可以让你拥有多个版本的Ruby,并且可以在多个版本之间自由切换。如果已经安装过跳到第2步(rvm -v 查看是否安装) $ curl -L get.rvm.io | bash -s stable

2017-06-15 18:12:49 1121

转载 优化UITableViewCell高度计算的那些事

戳原文:戳我看原文我是前言这篇文章是我和我们团队最近对 UITableViewCell 利用 AutoLayout 自动高度计算和UITableView 滑动优化的一个总结。我们也在维护一个开源的扩展,UITableView+FDTemplateLayoutCell,让高度计算这个事情变的前所未有的简单,也受到了很多星星的支持,github链接请戳我这篇总结你可以读到:

2017-05-17 17:23:06 311

原创 iOS Runtime与消息转发机制

首先贴上Runtime代码,参照着代码进行runtime的学习Runtime代码 (使用版本为objc4-646.tar)首先,如果要了解Runtime机制,我们不得不先说一下iOS的消息转发机制,来看下面的这一段代码- (void)testMessageSend { UILabel *label = [[UILabel alloc] initWithFrame:s

2017-03-30 14:03:48 408

翻译 利用RunLoop优化tableView

原文链接:http://www.qingpingshan.com/rjbc/ios/214222.htmliOS开发中,UITableView的优化一直是一个老生常谈的问题,除了常用的预加载,缓存等方法以外,其实利用RunLoop 的循环也可以实现超清大图的流畅加载,具体的使用方法我们利用一个demo来详细理解:首先,我们有一个需求,就是要从网络加载高清大图到UITableViewCe

2017-03-23 18:04:16 4199

转载 深入理解RunLoop

fdssdfsdf深入一.RunLoop基本概念概念:程序的运行循环,通俗的来说就是跑圈.1. 基本作用(作用重大) (1) 保持程序的持续运行(iOS程序为什么能一直活着不会死) (2) 处理app中的各种事件(比如触摸事件、定时器事件【NSTimer】、selector事件【选择器·performSelector···】) (3)节省CPU资

2017-03-23 11:10:37 414

转载 iOS中 +(void)load +(void)和initialize的区别

+(void)load  方法只要类所在文件被引用就会被调用,而initialize是在类或者子类的第一个方法被调用前调用。所以如何类没有被引用到Complie Sources中就不会调用load方法,因此,load方法是在main函数之前调用的,因此,load方法总是在main函数之前调用的。Load如果一个可以调用Load方法,那么他在调用这个方法前会调用父类的load方法。而

2017-03-17 20:30:46 914

原创 Xcode 中删除多余的证书

资源文件路径在   ~/Library/MobileDevice/Provisioning Profiles   路径下

2017-03-13 09:52:50 578

原创 CoreData 之 magicRecoard的使用

如需使用系统的CoreData,十分的繁琐,现在3方库封装的CoreData已经非常的成熟,下面就介绍MagicRecoard   1导入方式很多,首先,我还是介意从CocoaPods导入,因为这样可以实时的更新我们的3方库,以便使用最新的版本下面我要介绍一个场景在数据请求成功后,将数据存入数据库,然后在数据请求失败时,要求读取数据库中的内容首先,导入 MagicalRec

2016-12-15 14:18:33 1112

原创 CoreData在Xcode 8 中的使用

如需转载,请注明出处在Xode8之前,CoreData的使用是非常方便的,先创建一个DataModel,,然后创建NSManagedObject SubClass,都是一个界面上操作,非常方便,但是更新过Xcode 8后,CoreData的创建需要进行一点小小的改动1.创建方式上的改动  首先和之前的创建方法一样,还是先创建DataModel   2.在创建好的

2016-12-15 11:41:35 4421 2

转载 JSPath原理

一、用途是否有过这样的经历:新版本上线后发现有个严重的bug,可能会导致crash率激增,可能会使网络请求无法发出,这时能做的只是赶紧修复bug然后提交等待漫长的AppStore审核,再盼望用户快点升级,付出巨大的人力和时间成本,才能完成此次bug的修复。使用JSPatch可以解决这样的问题,只需在项目中引入JSPatch,就可以在发现bug时下发JS脚本补丁,替换原生方法,无需更新APP

2016-08-13 16:53:14 1345

转载 iOS利用RunTime机制添加热补丁

原文链接http://www.cnblogs.com/machao/p/5198555.html?utm_source=tuicool&utm_medium=referralios 由于苹果的审核政策,一旦上线后发现bug是件让人崩溃的事情不过可以利用oc的runtime机制可以家用JSPatch动态的为工程打热补丁下载地址:https://github.com/age

2016-08-13 16:17:43 524

转载 具有深度的iOS细节面试题

原文出自:https://github.com/ChenYilong/iOSInterviewQuestions/blob/master/01%E3%80%8A%E6%8B%9B%E8%81%98%E4%B8%80%E4%B8%AA%E9%9D%A0%E8%B0%B1%E7%9A%84iOS%E3%80%8B%E9%9D%A2%E8%AF%95%E9%A2%98%E5%8F%82%E8%80%

2016-08-12 15:55:20 1299

转载 枚举类型的区分

一般情况下,我们采用C风格的enum关键字可以定义枚举类型。[cpp] view plain copy enum{       UIViewAnimationTransitionNone,      UIViewAnimationTransitionFlipFromLeft,      UIViewAnimationTransitionFlipFromRight,

2016-08-12 15:03:14 504

原创 AFNetWorking的二次封装

//首先先把AFN中的请求语句抽出来#import @interface HttpNetworkTool : NSObject/** * get请求 * * @param url 请求地址 * @param params 请求参数 * @param success 成功回调 * @param failure 失败回调 */+ (void)get:(NSSt

2016-08-11 14:51:57 384

原创 UICollectionView原理

UICollectionView是我们经常用的一个控件,但是有的时候我们也只是会用就可以,并没有去了解他的实现原理,CollectionView这个东西很广,用好了比可以做出多种效果,在此我们做一个皮毛的了解

2016-08-11 14:47:56 1232

转载 UIDynamic动画效果总结

UIDynamicAnimator 学习总结什么是UIKit动力?—— 一句话:UIKit动力提供了一个模拟真实世界中力学相关的动画和交互系统。比如重力、碰撞和吸附等。UIKit动力具有可组合、可重用和声明式的特点。1.吸附行为(UIAttachmentBehavior):有一个对象UIAttachmentBehavior,该对象用来指定两个动力项(项或点)之间的连接,当一个项

2016-06-15 14:35:25 590

原创 基类控制器(BaseViewController)

一个项目做了半年了,终于做完了,测试通过,提交审核,这段时间无疑是最开心的日子,小酌一杯咖啡,听段音乐,回过头来看看这段时间的日子,苦中作乐.想想从iOS初级工程师,慢慢的蜕变到中级,中高级,是一个很不容易的过程,作为一名中高级开发工程师,封装一些公用的类,基类还是很有必要的,我想现在的我也可以去写一些框架了,比如我们经常用到的基类控制器,其他的难题交给高级工程师去做吧,废话少说,直接上代码#

2016-04-13 14:36:25 1407 1

原创 自定义导航栏(Base)

+ (void)initialize{ UINavigationBar *bar = [UINavigationBar appearance];// bar.clipsToBounds = YES;// [bar setBackgroundImage:[UIImage imageNamed:@"navigation"] forBarMetrics:UIBarMetrics

2016-04-13 14:26:10 400

原创 自定义导航栏继承自BaseNav

@interface PublicNavBar : UIView/** 返回按钮 */@property (weak, nonatomic) IBOutlet UIButton *backButton;/** 返回按钮宽度*/@property (weak, nonatomic) IBOutlet NSLayoutConstraint *backButtonWidth;/** 标题 */

2016-04-13 14:24:40 502

转载 iOS9设置启动图方法

[摘要:一.增加启动图片 面击Image.xcassets进进图片治理,左击,弹出"New Launch Image"或面上面的+号建立Launch Image;如图,右边的勾选可让您挑选是不是要对ipad,横屏,横屏,以] 一.添加启动图片点击Image.xcassets进入图片管理,右击,弹出"New Launch Image"或点下面的+号创建Laun

2016-02-19 18:17:05 780

原创 单例的封装创建与使用

/** * 使用该文件,就可以实现单例模式。 */// .h文件#define FJXSingletonH(name) + (instancetype)shared##name;// .m文件#define FJXSingletonM(name) \static id _instance = nil; \+ (id)allocWithZone:(struct _NSZone *

2016-01-03 12:28:28 363

转载 UITabelViewCell高度的自适应

转自Haven's Blog 不知道大家有没有发现,在iOS APP开发过程中,UITableView是我们显示内容常见的控件,本人觉得它是UIKit中最复杂的一个控件。今天要向大家介绍的就是如何动态计算UITableViewCell高度的一经验与技巧,在此做一些总结方便朋友们查阅。为了不让讲解空洞抽象,我还是用代码实例的方式进行讲解,这样更容易接收与学习。 本文将介绍四种情况

2015-12-20 16:46:13 527

原创 一个关于AVPlayer蛋疼的释放问题(iOS 9.0 AVPlayer的使用与内存的释放问题)

首先需要创建AVPlayer  这时候要先包含头文件,因为是9.0了,所以不用包含库,直接导入头文件即可#import 在这里可以把播放器作为成员变量,方便全局使用,当然,也可以不用,我在这里是作为全局变量来使用的,方便内存的管理@property (nonatomic,strong) AVPlayer *player;//视频播放@property (nonatomic,stron

2015-11-06 16:58:14 8522

转载 iOS求生之路(三)(UIAlertView的用法)

首先,视图控制器必须得实现协议UIAlertViewDelegate中的方法,并指定delegate为self,才能使弹出的Alert窗口响应点击事件。具体代码如下:ViewController.h中的代码如下:#import @interface ViewController : [email protected]中的详细代码:- (

2015-11-04 18:43:22 427

翻译 UIButton的图文混排

我们常常需要用到按钮需要文字和图片同时显示,例如: 我们需要定义一个UIButton的子类实现文件- ( id )initWithFrame:( CGRect )frame{self = [ super initWithFrame :frame];if ( self ) { //可根据自己的需要随意调整 self . titleLabel

2015-11-04 12:02:13 547

转载 地图定位

概览现在很多社交、电商、团购应用都引入了地图和定位功能,似乎地图功能不再是地图应用和导航应用所特有的。的确,有了地图和定位功能确实让我们的生活更加丰富多彩,极大的改变了我们的生活方式。例如你到了一个陌生的地方想要查找附近的酒店、超市等就可以打开软件搜索周边;类似的,还有很多团购软件可以根据你所在的位置自动为你推荐某些商品。总之,目前地图和定位功能已经大量引入到应用开发中。今天就和大家一起看

2015-10-23 21:12:08 485

原创 CocoaPads的安装(二)

上一篇讲到的需要在电脑上暗转环境后才能装cocoapods,本篇来讲如何安装cocoapods1..安装Cocoapods,在终端输入命令$sudo gem install cocoapods这个时候会提示你输入密码,注:在终端输入密码不会有提示,光标也不会移动,一定要注意成功后:2.使用search命令搜索类库名: 

2015-10-22 17:38:02 417

翻译 CocoaPads的安装(一)

以下代码区域,带有 $ 打头的表示需要在控制台(终端)下面执行(不包括 $ 符号)步骤0 - 安装系统需要的包   # For Mac   # 先安装 [Xcode](http://developer.apple.com/xcode/) 开发工具,它将帮你安装好 Unix 环境需要的开发包步骤1 - 安装 RVM RVM 是干什么的这里就不解释了,后

2015-10-22 14:09:48 455

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除