自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

勿在浮沙筑高楼

FarmGuo Blog

  • 博客(72)
  • 资源 (13)
  • 收藏
  • 关注

原创 指定初始化和便利初始化

1,指定初始化方法必须调用父类的指定初始化方法(通过super的方式),NSObject是所有类的根类,其指定初始化方法是init。2,类的便利初始化方法必须调用类的其他指定初始化方法。3,类实现了指定初始化方法,必须实现(覆盖实现)父类的所有指定初始化方法.........................................................

2022-07-13 20:13:18 478

原创 Xcode的诊断配置

Xcode的scheme配置中,有个Diagnostics栏目,其中有很多内存相关的配置,用来帮助开发者定位内存问题。常用的功能有这些。Address SanitizerGuard MallocZombie ObjectsMalloc ScribbleMaloc Guard EdgesMalloc Stack LoggingAddress Sanitizer,地址消毒剂Guard MallocMalloc Scribble,将分配的内存填充0xAA(通过malloc调用的,calloc不会填

2022-07-07 10:53:54 815

原创 ARM 64指令小记

1 test2 cmp

2022-05-31 18:18:46 2028

原创 Flutter小记

1 三种树Flutter的UI系统包含三棵树:Widget树、Element树、渲染树。他们的依赖关系是:Element树根据Widget树生成,而渲染树又依赖于Element树。Widget有个createElement方法,返回一个Element对象。Element有个renderObject方法,返回一个RenderObject对象。2 加载过程现在我们重点看一下Element,Element的生命周期如下:1、Framework 调用Widget.createElement 创建一个El

2022-03-02 17:24:31 1683

原创 内存的分段与分页

虚拟地址经过内存管理单元处理(MMU)成物理地址,然后再访问。经过段内存管理单元处理变成线性地址,再经过页内存管理单元处理变成物理地址。但目前的系统实际上只存在分页,而不存在分段。常见的cs代码段,ds数据段,ss堆栈段,es拓展段等等这些段表面上是存在的,里面也是有值的,但是其段选择子对应的基址却是0。相当于不分段。分页的具体流程是什么样呢?以32位系统为例,一般采用2级分页形式。即页目录项和页表项再到具体的页。...

2022-02-21 19:48:59 478

原创 iOS的仿射的一点理解

1 CGAffineTransform定义如下:struct CGAffineTransform { CGFloat a, b, c, d; CGFloat tx, ty;};这只定义了部分数据,这个其实是一个3*3的矩阵,最后一列永远是[0,0,1]。/* Return a transform which translates by `(tx, ty)': t' = [ 1 0 0 1 tx ty ] */CGAffineTransform CGAffineTransfo

2022-01-11 15:03:03 1289

原创 mac OS与iOS的系统调用

mac OS 上 x86 使用syscall,32位 int 0x80。中断号定义在#import <sys/syscall.h>syscall_sw.h调用分#define SYSCALL_CLASS_NONE 0 /* Invalid /#define SYSCALL_CLASS_MACH 1 / Mach / #define SYSCALL_CLASS_UNIX 2 / Unix/BSD /#define SYSCALL_CLASS_MDEP 3 / Machine-depe

2021-11-08 19:57:54 2433

原创 Aspects源码分析

Aspects是一个用来切片编程的开源框架,提供了丰富接口,可以Hook类和单个对象的方法,并提供了原实现前Hook,替换原实现,原实现后Hook等选项。1 实现流程不管是Hook类的还是Hook某个对象的,基本流程都是将原SEL指向objc_msgForward,使其走消息转发的流程,然后将原实现保存在aliseSEL中。然后将forwardInnovation的实现设为自定义的方法,如果原来有forwardInnovation的实现,则将其保存在AspectsForwardInvocationSel

2021-10-29 16:13:27 144

原创 WKWebView小记

1 额外的进程WKWebView有额外的2个进程,Networking和Render。所以性能较好,且内存占用低。2 遇到的坑坑1 打卡新网页不支持_blank,_blank用来打开一个新的网页,但WKWebView下却点击无反应。需要进行特殊处理,-(WKWebView *)webView:(WKWebView *)webView createWebViewWithConfiguration:(WKWebViewConfiguration *)configuration forNavigatio

2021-10-29 16:03:15 349

原创 进程与线程

进程三个状态:就绪Ready,运行 Runing,阻塞 Suspend。就绪代表资源都已经准备好,只待CPU执行,阻塞表示需要获取资源导致当前无法继续执行而被挂起。进程是资源分配的基本单位,而线程是CPU调度和执行的基本单位。进程创建后会分配进程控制块(PCB)包含以下信息1,进程描述信息:进程标示符(pid),用户标示符(uid)2,进程控制和管理信息:进程状态,进程优先级3,资源分配信息:内存地址空间、文件列表4,CPU相关信息:寄存器的值,页表信息通常PCB是以链表的方式进行管理,把具有

2021-10-13 21:54:45 66

原创 跨端技术谈

目前流行的跨端方案按实现形式可分为三种1,通用WebView2,React Native3,Flutter1.通用WebView2.React Native使用JavaScriptCore引擎进行前端和OC Native进行交互,将前端的语言实现转换为端内的代码(RC开头的类)来进行实现,最终使用Native的渲染,渲染性能比通用WebView好些。由于中间多了一个转换的过程,对性能会有一定的影响。而且涉及到前端到Native的代码转换,当Native版本升级时,需要适配改动。3.Flutte

2021-10-07 16:30:59 391

原创 思想杂记之小总结

1 App的编译过程2 浏览器敲下回车后发生了什么3 KVO/通知/Block/Delegate/Target-Action

2021-08-31 15:13:40 127

原创 HTTP 小结

1.0/1.1/2.0/3.0 区别

2021-08-05 18:56:14 213

原创 UIView和CALayer

1 两者关系两者互相依赖,UIView是管理CALayer,而CALyer则展示和绘制内容,UIView继承自UIResponder,可以响应和处理事件。UIView的很多属性和CALyer是共用的,比如UIView的alpha和CALayer的opacty。有些则会相互影响,比如CALayer的anchorPoint,会影响UIView的frame。内容的绘制UIView是CALayer的delgate,通常情况下不参与内容绘制,CALayerDelegate有以下可选方法:@protocol

2021-07-23 10:48:40 737

原创 RunLoop的一些理解

1.Runloop与dispatch的关系1.在__CFRunLoopRun函数中,用dispatch_source_create创建一个定时器。处理此次runLoop mode的运行时间,唤醒Runloop2.使用dispatch的任务,例如dispatch_async 提交的任务dispatch_after 提交的延时任务dispatch_source_createdispatch_source_set_timerdispatch_source_set_event_handler设置的

2021-05-05 09:42:05 890 2

原创 TaggedPointer

64位系统才会有TaggedPointer功能,本意是为了减小内存浪费,提升性能。TaggedPointer的相关参数的初始化是在libobjc库的_read_images中进行的。 if (DisableTaggedPointers) { disableTaggedPointers(); } initializeTaggedPointerObfuscator();initializeTaggedPointerO

2020-05-28 20:13:11 372

原创 super 方法调用

1我们是通过[super somemethod]来调用父类方法的。在调用的父类方法中,self还是子类的对象。也可以通过objc_msgSendSuper这种方式来调用父类方法,传入一个struct objc_super 结构体参数。objc_msgSendSuper2和objc_msgSendSuper前者是私用的,只能由系统转化,即将[super somemethod]转化为objc_msgSendSuper2。后者是公开的,可以手动调用。2参数有所不同手动调用[super method]时

2020-05-28 20:12:19 1071

原创 CoreText小结

1 Line 每一行Run 每一行的具体绘制单元,相同属性的为一个Run,特殊情况是即便属性相同,但中英文不会为同一个Run2 相关函数1获取frame的所有lineCFArrayRef CTFrameGetLines( CTFrameRef frame )获取所有line的位置void CTFrameGetLineOrigins( CTFrameRef frame, CFRange range, CGPoint origins[_Nonnull] )2

2020-05-28 20:11:38 362

原创 Block小结

一直使用Block,却没有认真研究过,做个总结吧block的实质就是匿名函数,通过函数指针的调用来实现的,并对内部的引用到的数据进行管理(retain/release),封装后成为block,最终变成对象。1.Block结构 void (^block)(void) = ^(void) { printf("hello world"); };通过clang -rew...

2020-03-09 21:29:13 238

原创 Map和Dictionary

NSMutableDictionary会对key进行强引用,对value进行copy,key必须有copyWithZone方法。NSMapTable可以灵活配置key和value的内存管理方法,更多类型见NSPointerFunctionsOptions枚举值[NSMutableDictionary dictionary]等同于[NSMapTable mapTableWithKeyOp...

2019-04-22 11:43:48 1964

原创 结构体的大小

1结构体所占空间的大小,并不是简单地将结构体内所有数据元素各自占的空间相加,这里涉及到内存字节对齐的问题。从理论上讲,对于任何变量的访问都可以从任何地址开始访问,实际上,为了提高存取速度,会进行字节对齐。这就需要各类型数据按照一定的规则在空间上排列,而不是顺序地一个接一个地排放。比如有些平台每次读都是从偶地址开始,一个int型(假设为32位)如果存放在偶地址开始的地方,那么一个读周期就可以读出,而如

2016-06-19 21:28:49 621

原创 TableView滚动时的懒加载

列表的展示,多是用TableView

2016-03-14 14:56:02 460

原创 Xcode中使用Scheme管理项目

在应用开发中

2016-03-14 14:55:07 9484

原创 UICollectionView的使用(一)

在iOS开发中,与列表展示相关的,更多的是使用UITableView,几乎每个App都离不开它。对比与UITableView,UICollectionView的使用比较繁琐,所以UICollectionView的使用不是很常见。但UICollectionView也有自身的特点,比如横向布局,多行或者多列(瀑布流)展示。Apple也推荐了一些应用UICollectionView典型场景–相册、书库。1

2016-03-01 18:17:48 666

原创 iOS应用内语言切换功能

当我们的应用仅仅面向国内用户群,一般仅支持一种语言–中文就可以了。当面向国外用户时就需要进行国际化了,不仅仅是语言的转变,也可能包括设计风格,页面布局、交互效果的转变,如微信,微博,QQ这类应用都有着切换语言的功能。iOS常用的国际化流程1.建立strings文件。2.在Localization勾选支持的语言,在不同的后缀的同文件名的strings中设置标题。3.使用NSLocalizedStrin

2016-01-27 15:26:40 1643

原创 图像Exif Orientation

图像共用八种方向,以F做示范参考:如何处理iOS中照片的方向http://www.cocoachina.com/ios/20150605/12021.htmlExif Orientation Taghttp://sylvana.net/jpegcrop/exif_orientation.htmlhttp://feihu.me/blog/2015...

2016-01-25 15:43:36 600

原创 RESideMenu 抽屉效果解析

RESideMenu

2016-01-14 11:21:42 440

原创 iOS应用内语言切换功能

当应用的用户是国际用户时

2016-01-14 11:19:03 320

原创 瀑布流的一种实现方式

如今瀑布流布局也流行起来了

2016-01-14 11:17:37 355

原创 iOS图片选择的优化与封装

前言照片的选取在App中是相当普遍的场景,如用户修改头像、上传照片。一般给用户两种选择 1拍照 2从相册选取在iOS中选择图片这个任务是通过UIImagePickerController来实现的,通过设置sourceType来决定是从相册选取还是拍照,当前的视图控制器需要实现UIImagePickerControllerDelegate协议的方法。 imagePickerContro

2015-11-01 14:37:12 544

原创 iOS客户端三方登录的封装

如今的应用的开始偏向社交化发展了,以产生粘性,也可以让用户登录进App体验更多的功能,而传统的注册登录的流程就稍显冗余,集成三方登录似乎势在必行。仅仅调用下客户端就完成注册登录,用户体验会有极大提升。常见的三方登录大致有微博、微信、QQ、豆瓣、人人。在开发蜜Live时,考虑我们的大部分用户是海外用户,特意集成了Facebook和Twitter登录。这里就主要讲述对微博、微信和QQ的登录封装。主要目

2015-10-25 19:01:39 1012

原创 iOS管理状态栏

在某些场景中我们需要切换状态栏的样式,比如从一个白色主题的场景换到黑色主题的场景。iOS中设置状态栏大致有两种

2015-09-19 15:18:13 493

原创 记录

//用户有两种动作,1拖动到指定位置后执行scrollViewDidEndDragging,2滑动后,任其滚动后停止执行scrollViewDidEndDecelerating//1只对应 scrollViewDidEndDragging//2对应两种方法,(但scrollViewDidEndDragging的decelerate为YES)所以要判断,防止重复执行操作

2014-11-25 15:32:25 485

原创 快速排序

我们都知道冒泡排序是排序里面最简单的排序,很容易理解的一个排序算法。但它的时间复杂度为O(n^2)的,快速排序是对冒泡排序的一种改进,基本思想是,通过一轮排序将待排记录分割为独立的两部分,其中一部分的记录的关键字都比另一部分的关键字小,然后再分别对者两部分记录继续排序,已完成排序工作。假如待排序的数组为49 38 65 97 76 13 27 49.经过一轮快速排序后变成27

2014-10-08 14:27:02 571

原创 折半查找

折半查找的查找过程是,先确定待查找记录所在的范围,ran'h

2014-10-06 11:24:43 532

原创 简单选择排序

简单选择排序属于选择排序中最为读者熟悉的排序,shao'w

2014-10-06 10:22:14 484

原创 iOS获得相册里面的相片

要获得手机里面的相片,只能用系统的方法

2014-10-05 16:06:04 573

原创 一点技巧

1.显示文件夹用户下的资源库

2014-10-05 11:32:24 455

原创 最基本的Web服务器(C#实现)

要实现Web服务器,就必须先了解HTTP协议。了解浏览器是如何通过HTTP协议与服务器进行通信的,把这些问题搞懂后,那Web服务器的框架就有了。我们所实现的是一个最基础的。不管用户发送何种请求,都返回一个页面,至少演示一下HTTP工作的流程。HTTP协议默认是80端口。所以一般浏览器发起请求时都没有显式的将端口放在地址里面。其实就可以看成是一次通信,有IP地址,有端口(80)。服务器和浏览器收

2014-10-05 11:24:53 4343

原创 OC的代理问题

OC可以告一段落了,OC总体来说确实不难,难点在于资料不多,且大部分是老外所写。而且OC语法与其他的常用语言如C、C++、Java、C#相差太大。老外的书写的固然好(国内一部分书基本都是照抄的,呵呵),但书的风格与我们习惯的不太一样,再经过翻译后,

2014-10-05 11:21:30 649

iOS三方登录代码

iOS三方登录代码。已经封装完毕。需自行设置参数。

2015-10-23

iOS本地推送

iOS本地推送,Xcode 5.0 ,完整工程,无bug

2014-10-04

iOS仿QQ折叠

仿QQ的联系人折叠效果。完整工程,Xcode5.0

2014-09-26

iOS中UDP通信

iOS下UDP的通信,完整源代码。Xcode是5.0

2014-09-22

iOSTCP通信

iOS下用TCP进行聊天的源代码,完整工程。可与多人聊天

2014-09-22

iOS和PHP的登录交互

自己为了配合博文所写的源代码,包括iOS工程文件和PHP文件及sql代码,绝对能用,Xcode版本为5.0

2014-09-22

学生成绩管理系统

学生成绩管理系统设计报告,程序完整,包括数据库,报告,源程序

2013-12-31

Windows2000编程技术内幕

Windows 2000 编程技术内幕,理解windows操作系统必备。详细解释了windows操作系统的运行流程,剖析了优点级缺点

2013-08-02

彻底搞定C指针(完全版)

搞定c指针必备。短小精悍,紧抓学生弱点,避免c指针陷阱。不看真后悔

2013-08-02

留言板系统

jsp+mysql设计的留言板系统,结构清晰。内有数据库源代码及详细设计报告。

2013-08-02

成绩录入系统

用jsp+mysql开发的学生成绩录入系统。已通过调试。内附有设计报告。

2013-08-02

jsp+mysql学生管理系统

jsp课程作业,用jsp+mysql开发。内有设计报告,结构通俗易懂。

2013-08-02

计算机统考操作系统

统考操作系统(2009-2012)试题及精心解析

2013-08-02

空空如也

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

TA关注的人

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