自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(78)
  • 资源 (1)
  • 收藏
  • 关注

原创 AutoReleasePool

AutoReleasePoolAutoReleasePool是用来自动释放调用了autoRelease的对象,通过runloop 开始进入runloop,即将休眠,即将退出runloop的时候开始处理AutoReleasePool对象,进行释放。apple 官方说明在以下情况下使用@autoreleasepool如果你编写的程序不是基于 UI 框架的,比如说命令行工具;如果你编写的循环中...

2021-10-02 19:43:36 174

原创 iOS的内存管理

前言iOS的开发语言是Objective-C,也就是对C语言进行了面向对象的封装。所以理解iOS的内存管理,必然要先去了解一下C语言的内存管理,这样才会更透彻。C语言的内存四区栈区(stack):由编译器自动分配释放,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。后进先出(LIFO)。堆区(heap): 一般由程序员分配释放,若程序员不释放,程序结束时可能由操作系统回...

2021-03-08 11:04:38 284

原创 CoreText简介(一)

关于CoreTextCoreText是一种用于布局文本和处理字体的高级的底层技术。在Mac OS X v10.5和iOS 3.2中引入的核心文本API可以在所有OS X和iOS环境中访问。重要提示:Core Text是为那些必须在底层进行文本布局和字体处理的开发人员设计的,比如布局引擎的开发人员。如果可能的话,你应该使用更高层次的框架来开发你的应用程序——也就是说,使用iOS中的Text Ki...

2020-08-18 13:21:40 493

原创 Mac Sublime 使用的总结

1. 插件的安装组合键 Ctrl+Shift+P 调出命令面板,输入install 选择 install packge ,之后输入你想安装的插件的名称,等待下载安装。2. python的环境搭建自己安装sublime。自己安装python3。上面两部安装完成之后,打开sublime。打开Tools > Build System > New Build Sys...

2019-12-26 19:23:26 334

转载 Clang编译Block

在开始介绍Clang编译Block之前,可以先了解下Clang编译器:Xcode clang 编译器 中文The Compiler...

2019-09-10 10:39:23 339

转载 iOS Block原理探究以及循环引用的问题

iOS Block原理探究以及循环引用的问题 《Objective-C高级编程》这本书就讲了三个东西:自动引用计数、block、GCD,偏向于从原理上对这些内容进行讲解而且涉及到一些比较底层的实现,再加上因为中文翻译以及内容条理性等方面的原因,书本有些内容比较晦涩难懂,在初初读的时候一脸懵逼。本文是...

2019-09-09 17:10:33 420

转载 iOS即时通讯,从入门到“放弃”?

image前言本文会用实例的方式,将iOS各种IM的方案都简单的实现一遍。并且提供一些选型、实现细节以及优化的建议。注:文中的所有的代码示例,在github中都有demo:iOS即时通讯,从入门到“放弃”?(demo)可以打开项目先预览效果,对照着进行阅读。言归正传,首先我们来总结一下我们去实现IM的方式第一种方式,使用第三方IM服务对...

2019-09-09 16:55:35 2597

转载 iOS: 玩转UICollectionViewLayout

前言:实现垂直方向的单列表来说,使用UITableView足以;若是需要构建横向滑动列表、gridView等直线型布局,则使用UICollectionView+UICol...

2019-09-09 16:43:18 581

转载 JavaScriptCore浅析

OS X Mavericks 和 iOS 7 引入了 JavaScriptCore 库,它把 WebKit 的 JavaScript 引擎用 Objective-C 封装,提供了简单,快速以及安全的方式接入世界上最流行的语言。不管你爱它还是恨它,JavaScript 的普遍存在使得程序员、工具以及融合到 OS X 和 iOS 里这样超快的虚拟机中资源的使用都大幅增长。这样一来,先抛开动态和类型安...

2019-09-05 09:27:03 373

原创 [LayoutConstraints] Unable to simultaneously satisfy constraints.

[aSubView mas_makeConstraints:^(MASConstraintMaker *make) { make.left.equalTo(self).offset(10); make.right.equalTo(self).offset(-10);}警告如下:[LayoutConstraints] ...

2019-08-20 09:09:00 6707

原创 初识ReactNative

1.简介关于reactNative的简介我在这里面就不多说了。就简单的说一下为什么选择Reactnative吧。选择它有两点原因:首先它是大公司facebook出品的能够实现ios、android、web三端统一的框架。其次就是热更新。2.环境的搭建直接自己去看中文文档这里面有详细的讲解如何去搭建这个框架的开发环境。3.调试集成成功之后大家最关...

2019-08-18 23:45:00 115

原创 日历类的使用总结

下面简单了解一下日历的Api: public enum Identifier { case gregorian // 公历 case buddhist // 佛教日历 case chinese // 中国农历 case coptic // 亚历山大历 ...

2019-07-19 17:05:10 470

原创 HTTP Status 500 - java.lang.IllegalStateException: No output folder

出现这种问题的时候就是tomcat的work文件夹没有写权限,执行这个命令重启eclipse就好sudo chmod 777 /Users/pengf/Library/Tomcat/work/Catalina/localhost

2019-07-19 17:02:12 463

原创 使用cocoaPod发布、更新Framework

使用cocoaPod发布、更新Framework首先提供一下参考链接:https://www.jianshu.com/p/343a008cfc8e?utm_campaign=hugo&utm_medium=reader_share&utm_content=note&utm_source=qq这里面简单的描述一下,发布的自己的Framework的几个简单的步骤:首先在...

2019-07-19 16:58:48 579

原创 Core Graphics 之 PostScript Conversion (十六)

PostScript Conversion预览应用程序自动将PostScript文件转换为PDF。Quartz 2D API提供了可用于在应用程序中执行PostScript转换的函数。Quartz 2D PostScript转换函数在iOS中不可用。按照以下步骤将PostScript文档转换为PDF文档:编写回调。Quartz通过回调来传递每个页面进...

2018-08-28 13:29:00 156

原创 Core Graphics 之 PDF Document Parsing (十五)

PDF Document ParsingQuartz提供了一些功能,允许您检查PDF文档结构和内容流。检查文档结构可以让您阅读文档目录中的条目以及与每个条目相关联的内容。通过递归地遍历目录,您可以检查整个文档。一个PDF内容流正是它的名字所暗示的——一个连续的数据流,比如‘BT 12 /F71 Tf(绘制此文本)Tj…其中,PDF操作符及其描述符与实际...

2018-08-28 13:24:00 200

原创 Core Graphics 之 PDF Document Creation, Viewing, and Transforming(十四)

PDF Document Creation, Viewing, and TransformingPDF文档将独立于分辨率的矢量图形、文本和图像存储为一系列用紧凑编程语言编写的命令。PDF文档可以包含多页图像和文本。PDF对于创建跨平台的只读文档和绘制独立于分辨率的图形非常有用。Quartz为所有应用程序创建了高保真的PDF文档,这些文档保留了应用程序的...

2018-08-28 13:15:00 238

原创 Core Graphics 之 Core Graphics Layer Drawing (十三)

Core Graphics Layer DrawingCGLayer对象(CGLayerRef数据类型)允许您的应用程序使用图层来绘图。层适用于以下情况:您计划重用的绘图的高质量屏幕外呈现。例如,您可能正在构建场景并计划重用相同的背景。绘制背景场景到一个层,然后绘制层,无论何时你需要它。另外一个好处是,您不需要知道颜色空间或与设备相关的信息就可以绘制...

2018-08-28 13:01:00 207

原创 Core Graphics 之 Bitmap Images and Image Masks (十二)

Bitmap Images and Image Masks位图图像和图像掩码类似于Quartz中的任何绘图原语。Quartz中的图像和图像掩码都由CGImageRef数据类型表示。正如您将在本章后面看到的,有许多函数可以用来创建图像。其中一些需要数据提供程序或图像源来提供位图数据。其他函数通过复制映像或对映像应用操作从现有映像创建映像。无论您如何在Qua...

2018-08-28 10:50:00 286

原创 Core Graphics 之 Data Management in Quartz 2D (十一)

Data Management in Quartz 2D管理数据是每个图形应用程序都需要执行的任务。对于Quartz,数据管理是指向Quartz 2D例程提供数据或接收数据。一些Quartz 2D例程将数据移动到Quartz中,例如那些从文件或应用程序的其他部分获取图像或PDF数据的例程。其他例程接受Quartz数据,例如将图像或PDF数据写入文件或将数...

2018-08-28 09:54:00 104

原创 Core Graphics 之 Transparency Layers (十)

Transparency Layers透明层由两个或多个对象组成,这些对象组合在一起生成复合图形。生成的复合对象被视为单个对象。当您想要对一组对象应用效果时,例如应用于图9-1中的三个圆圈的阴影,透明层是非常有用的。屏幕快照 2018-08-27 下午4.15.54.png如果您对图9-1中的三个圆圈应用阴影,而不首先将它们呈现到透明层...

2018-08-27 16:25:00 108

原创 Core Graphics 之 Gradients (九)

GradientsQuartz为创建gradient提供了两种不透明的数据类型——cgshadingref和CGGradientRef。您可以使用其中任何一种来创建轴向或径向梯度。渐变是一种不同颜色的填充。轴向梯度(也称为线性梯度)在两个定义的端点之间沿轴线变化。所有与坐标轴垂直的点都有相同的颜色值。径向梯度是指两个确定的端点之间沿轴线呈径向变化的填...

2018-08-27 16:12:00 123

原创 Core Graphics 之 Shadows (八)

Shadows阴影是在下面绘制的图像,并与图形对象相偏移,使阴影模仿投射在图形对象上的光源的效果,如图7-1所示。文本也可以被跟踪。阴影可以使图像显示为三维,或者看起来像漂浮的。屏幕快照 2018-08-27 下午3.06.27.png阴影有三个特点:1、x-offset,它指定阴影在水平方向上与图像偏移的距离。2、y偏移量,它指...

2018-08-27 15:15:00 147

原创 Core Graphics 之 Patterns (七)

Patterns模式是重复绘制到图形上下文的一系列绘图操作。你可以像使用颜色一样使用图案。当您使用模式进行绘制时,Quartz将页面划分为一组模式单元格,每个单元格的大小与模式图像相同,并且使用您提供的回调来绘制每个单元格。图6-1显示了绘制到窗口图形上下文的模式。屏幕快照 2018-08-27 下午2.26.14.pngThe Ana...

2018-08-27 14:56:00 210

原创 Core Graphics 之 Transforms (六)

TransformsQuartz 2D绘图模型定义了两个完全独立的坐标空间:表示文档页面的用户空间和表示设备本机分辨率的设备空间。用户空间坐标是与设备空间像素分辨率无关的浮点数。当您想打印或显示文档时,Quartz会将用户空间坐标映射到设备空间坐标。因此,您不必重写应用程序或编写额外的代码来调整应用程序的输出以在不同设备上进行最佳显示。您可以通过操作当...

2018-08-27 14:23:00 148

原创 Core Graphics 之 Color and Color Spaces (五)

Color and Color Spaces设备(显示器、打印机、扫描仪、照相机)不以同样的方式处理颜色;每个都只能展示自己能力范围内的颜色。在一个设备上产生的颜色可能不能在另一个设备上产生。要有效地使用颜色并理解使用颜色空间和颜色的Quartz 2D函数,您应该熟悉颜色管理概述中讨论的术语。该文档讨论了颜色感知、颜色值、独立于设备和设备的颜色空间、颜...

2018-08-27 13:49:00 161

原创 Core Graphics 之 Paths (四)

Pathspath定义了一个或多个形状或子路径。子路径可以由直线、曲线或两者组成。它可以是打开的路径可以是关闭的路径。子路可以是简单的形状,如直线、圆形、矩形或星形,也可以是更复杂的形状,如山脉的轮廓或抽象的涂鸦。图3-1显示了可以创建的一些路径。直线(在图的左上角)被虚线;线条也可以是实心的。弯弯曲曲的路径(在中间的顶部)由几条曲线组成,是一条开放的路...

2018-08-27 12:40:00 205

原创 Core Graphics 之 Graphics Contexts(三)

Graphics Contexts图形上下文表示绘图目的地。它包含绘图参数和绘图系统执行任何后续绘图命令所需的所有设备特定信息。图形上下文定义了基本的绘图属性,如绘图时使用的颜色、裁剪区域、行宽和样式信息、字体信息、合成选项等。您可以通过使用Quartz上下文创建函数或使用Mac OS X框架或iOS中的UIKit框架提供的高级函数来获得图形上下文。Q...

2018-08-24 18:06:00 178

原创 Core Graphics 概述(二)

Quartz 2D 概述Quartz 2D是一个二维绘图引擎,可以在iOS环境和内核之外的所有Mac OS X应用程序环境中访问。您可以使用Quartz 2D应用程序编程接口(API)来访问一些特性,例如基于路径的绘图、带有透明度的绘图、着色、绘图阴影、透明层、颜色管理、抗锯齿呈现、PDF文档生成和PDF元数据访问。只要有可能,Quartz 2D就会充分...

2018-08-24 17:13:00 153

原创 Core Graphics 简介(一)

简介Core Graphics(即Quartz 2D)是一款高级的二维绘图引擎,可用于iOS、tvOS和macOS应用程序开发。Quartz 2D提供了低层次的、轻量级的2D渲染,无论显示设备还是打印设备,都具有无与伦比的输出保真度。Quartz 2D是分辨率和设备无关的。Quartz 2D API易于使用,并提供了强大功能的访问,如透明层、基于路径的...

2018-08-24 17:02:00 274

原创 iOS PDFKit框架讲解(一)

iOS 11 后苹果在iOS平台开放了PDFKit SDK,可以使用这个框架显示和操作 pdf 文件,此项目应用PDFKit实现显示pdf、显示缩略图、展开大纲和搜索文字的功能。1、了解PDFKit框架的的类部分 class 描述:PDFView: 用来展示pdfPDFThumbnailView: 用来展示一排缩略图PDFDocument: 代表...

2018-08-21 14:29:00 1900

原创 iOS中NSTimer的总结

1、NSTimer的基本使用方法首先我们看那一下系统提供给我们的基本的使用方法。@interface NSTimer : NSObject// 创建一个定时器,但是没有添加到运行循环,我们需要在创建定时器后手动的调用 NSRunLoop 对象的 addTimer:forMode: 方法+ (NSTimer *)timerWithTimeInterv...

2018-08-13 16:44:00 182

原创 如何在swift的framework中使用加密框架CommonCrypto/CommonCrypto.h

此文章是https://stackoverflow.com/questions/25248598/importing-commoncrypto-in-a-swift-framework翻译而来。首先你需要创建一个Aggregate target 如下图设置runScript runScript代码如下: # This if-statement means we'll only run ...

2018-08-01 20:37:40 1673

原创 HTML5 基本标签的使用

HTML5 基本的标签<html>标签  它是html文档的根元素。但是html5允许完全省略这个元素。<head>标签 它是用于定义html文档的头部。但是html5允许完全省略这个元素。<title>标签 它是用于定义html页面的标题。<body>标签 它是用于定义html的页面主体部分。该标签可以指定id、class、style、等核心属性。...

2018-04-18 22:39:38 916

原创 最详细TextKit分析

1、粗略的了解一下TextKit     在iOS开发中,处理文本的视图控件主要有4中,UILabel,UITextField,UITextView和UIWebView。其中UILabel与UITextField相对简单,UITextView是功能完备的文本布局展示类,通过它可以进行复杂的富文本布局,UIWebView主要用来    加载网页或者pdf文件,其可以进行HTML,CSS和JS等文件的...

2018-02-26 22:32:32 5574

转载 正确的理解C/C++程序的内存分区

导读正确的理解C/C++程序的内存分区,是合格程序猿的基本要求。 网络上流形两大版本内存分区,分别为:五大内存分区:堆、栈、全局/静态存储区、自由存储区和常量存储区。 五大内存分区:堆、栈、全局/静态存储区、字符串常量区和代码区。且不论以上两种分区孰是孰非,孰优孰劣,我认为具体的内存分区和编译器有很大关系,我想不同编译器对内存的划分都不尽相同,但也大同小异。 综合对比,查阅相关资料,提

2017-12-08 09:25:03 921

转载 C 指针详解

前言:复杂类型说明 要了解指针,多多少少会出现一些比较复杂的类型,所以我先介绍一下如何完全理解一个复杂类型,要理解复杂类型其实很简单,一个类型里会出现很多运算符,他们也像普通的表达式一样,有优先级,其优先级和运算优先级一样,所以我总结了一下其原则:从变量名处起,根据运算符优先级结合,一步一步分析.下面让我们先从简单的类型开始慢慢分析吧:[cpp] view plain copyint p

2017-09-14 10:02:12 184

原创 浅析SDCycleScrollView实现原理

SDCycleScrollView是使用UICollectionView实现的轮播,图片的网络获取是依赖SDWebImage,也就是说使用SDCycleScrollView你就必须的使用SDWebImage。下面来简单介绍一下SDCycleScrollView的实现原理;1.SDCycleScrollView的大部分逻辑代码的实现都是放在“SDCycleScrollView.m”文件中,着这个文件里

2017-08-25 14:18:35 2133

转载 swift as/as?/as!的区别

摘自中文api的话:仅当一个值的类型在运行时(runtime)和as模式右边的指定类型一致 - 或者是该类型的子类 - 的情况下,才会匹配这个值。如果匹配成功,被匹配的值的类型被转换成as模式左边指定的模式。 首先是运行时 就不多说了 ,重要的是 as 应用条件有2种情况: 1,和 "as" 右边类型一致2,是右边类型的子类(这种情况在Java里叫向上转型)这是一个简单的例子:

2017-08-24 13:20:57 506

原创 关键字static和class的区别

关键字static和class的区别在方法的func关键字之前加上关键字static或者class都可以用于指定类方法.不同的是用class关键字指定的类方法可以被子类重写, 如下: override class func work() { print("Teacher: University Teacher")}但是用static关键字指定的类方法是不能被子类重写的, 根据报

2017-08-24 10:32:37 1364

ios CoreData详细详细讲解,在OBJC.IO上购买的

ios CoreData详细详细讲解,在OBJC.IO上购买的,价值96元,现在分享出去,下网能够帮助更多的人学习。

2019-01-10

空空如也

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

TA关注的人

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