自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(65)
  • 问答 (1)
  • 收藏
  • 关注

原创 iOS Tagged Pointer优化(NSString , NSNumber)

我们可以在WWDC2013的《Session 404 Advanced in Objective-C》视频中,看到苹果对于Tagged Pointer特点的介绍:Tagged Pointer专门用来存储小的对象,例如NSNumber, NSDate, NSString。Tagged Pointer指针的值不再是地址了,而是真正的值。所以,实际上它不再是一个对象了,它只是一个披着对象皮的普通变...

2019-09-16 23:00:18 2233

原创 Block总结

基本语法block在iOS开发中被视作对象,因此其生命周期会一直等到持有者的生命周期结束了才会结束。block截获自动变量并没有实现对C语言数组的捕获。实现void (^blk)(void) = ^{ printf("Block\n"); }; blk();我们知道Block底层也是用C语言代码实现的,现在我们写以上Block语句,通过终端转换为源代码C...

2019-09-16 22:56:35 239

原创 Swift MVVM

用OC开发的时候用的MVC架构模式,所以想在Swift中试试MVVM架构模式都说MVVM是MVC改进而来,因为MVC的Controller太庞大了,所以给他减减重,就新建了一种ViewModel类,它继承于NSObject, 从ViewController里抽出UI逻辑,就放在了ViewModel里了,在ViewModel里每一个View里的UI控件都有与之对应的属性。也就是说,对于在view...

2019-08-16 11:18:18 4634

原创 iOS 之 KVC KVO

KVC的定义都是对NSObject的扩展来实现的,Objective-C中有个显式的NSKeyValueCoding类别名,所以对于所有继承了NSObject的类型,都能使用KVC(一些纯Swift类和结构体是不支持KVC的,因为没有继承NSObject)KVC使用KVC在iOS开发中是绝不可少的利器,这种基于运行时的编程方式极大地提高了灵活性,简化了代码,甚至实现很多难以想像的功能,KVC也...

2019-08-16 10:40:17 290

原创 Swift 小知识总结

本文是我在写第一个Swift项目时,总结的小知识点因为从OC学习而来,只是简单的学了基本语法,在准备写的过程中,问题颇多。没有像OC系统学习,还是挺不好弄的,只能一边写一边总结,最主要查资料也挺少的,慢慢都去看文档了,英文的头大啊,逼迫我们变优秀Swift初始化方法Swift:必须添加init?(coder decoder: NSCoder)的原因全能初始化方法顾名思义,就是全部属性...

2019-08-10 10:25:10 207

原创 iOS-NSURLConnection与NSURLSession

和 NSURLConnection 一样,NSURLSession 指的也不仅是同名类 NSURLSession,还包括一系列相互关联的类。NSURLSession 包括了与之前相同的组件,NSURLRequest 与 NSURLCache,但是把 NSURLConnection 替换成了 NSURLSession、NSURLSessionConfiguration 以及 NSURLSession...

2019-08-10 10:17:40 385

原创 iOS 多线程编程

Mach看RunLoop的时候也说到这个Mach,唉Mach的独特之处在于选择了通过消息传递的方式实现对象与对象之间的通信。而其他架构一个对象要访问另一个对象需要通过一个大家都知道的接口,而Mach对象不能直接调用另一个对象,而是必须传递消息。...

2019-08-08 09:22:44 156

原创 iOS与JS交互 JSCore

源起随着互联网移动开发的热潮,web开发近几年也出现了许多移动开发框架,比如Rect native等许多,但是还是有一定的局限性,比如需要做一个端上 H5 照片上传功能,通过 JS 去实现往往效果会大打折扣,也很难达到业务方需要的顺滑体验,所以就出现了移动端和前端的交互。作为一名iOS开发者,讲讲iOS 与JS的交互。怎么做呢?在他们之间建立一座桥梁就很OK,感觉好多交互都是建立“桥”,比如S...

2019-08-03 10:02:54 1310 1

原创 CALayer子类

那我们就先讲讲常用的吧CAShapeLayer用UIBezierPath可以绘制任意路径的图像,那么CAShapeLayer就可以通过UIBezierPath绘制任意形状的阴影了- (void)viewDidLoad{[super viewDidLoad];//create pathUIBezierPath *path = [[UIBezierPath alloc] ini...

2019-08-01 19:58:23 246

原创 CALayer动画

CGAffineTransformUIView 的 transform 属性是一 个 CGAffineTransform 类型,用于在二维空间做旋转,缩放和平移。 CGAffineTransform 是一个可以和二维空间向量(例如 的3X2的矩阵创建一个 CGAffineTransform 实例:CGAffineTransformMakeRotation(CGFloat angle)CG...

2019-08-01 16:36:56 105

原创 CALayer应用

圆角开发者应该都已经很熟悉conrnerRadius了,设置圆角,刚开始是在button上,但其实很多控件都有,想想只要有layer就有

2019-08-01 15:59:45 135

原创 iOS 初探究CALayer图层

认识CALayerCALayer类在概念上和UIView类似,同样也是一些被层级关系树管理的矩形块,同样也可以包含一些内容(像图片,文本或者背景色),管理子图层的位置。 它们有一些方法和属性用来做动画和变换。和 UIView 最大的不同是 CALayer 不 处理用户的交互。并不清楚具体的响应链(iOS通过视图层级关系用来传送触摸事件的机 制),于是它并不能够响应事件,即使它提供了一些方法来判...

2019-08-01 09:17:31 355

原创 UIBezierPath详解

属性CGPath@property(nonatomic) CGPathRef CGPath;//将UIBezierPath类转换成CGPath,类似于UIColor的CGColor,可获取UIBezierPath经历的所有路径empty是否路径信息为空, 即使通过moveToPoint:移动到指定的位置也算不为空@property(readonly,getter=isEmp...

2019-07-31 10:06:18 378

原创 Runtime之AutoreleasePool小记

AutoreleasePoolautoreleasepool是和线程绑定的,一个线程对应一个autoreleasepool。而runloop和线程也是一一对应的,所以…class AutoreleasePoolPage { // EMPTY_POOL_PLACEHOLDER is stored in TLS when exactly one pool is // pushe...

2019-07-28 22:14:12 141

原创 iOS iphone X下的网络请求获取网络状态

一般都是用statusBar的UIStatusBarDataNetworkItemView来获取网络状态,但是会发现iphone X系列手机用这种方法不能获取。 NSArray *subViews = [[[[UIApplication sharedApplication] valueForKey:@"statusBar"] valueForKey:@"foregroundView"] subv...

2019-06-02 14:09:37 261

原创 iOS 事件传递&响应链

往往在子view超出父view时,超出的部分不会响应点击事件原因就在于:iOS的事件响应机制一个触摸事件的响应过程如下:用户触摸屏幕时,UIKit会生成UIEvent对象来描述触摸事件。对象内部包含了触摸点坐标等信息。通过Hit Test确定用户触摸的是哪一个UIView。这个步骤通过- (UIView *)hitTest:(CGPoint)point withEvent:(UIEve...

2019-05-18 17:27:26 11012 5

原创 iOS 全局悬浮按钮

现在有很多app都做这个全局按钮如上面两张图的效果,完成一个全局悬浮的按钮,而且不会划出屏幕外既然是全局,那写在AppDelegate中UIWindow是一种特殊的UIView,它相当于一块画框,而UIView相当于里面的画布。通常在一个app中只会有一个UIWindow。AppDelegate.h@interface AppDelegate : UIResponder <UIA...

2019-02-28 19:09:22 2649 1

原创 iOS 自定义分栏UISegmentControl

iOS 自带的UISegmentControl实现的就是类似上图的效果但是很多用处 一般这两个分栏是两个tableView,需要左右滑动来响应分栏下面来讲述这样的效果是怎么实现的呢主要那里有一根短红线,需要滑动 来切换tableView先自定义一个SegmentView.h//定义block,用来传递点击的第几个按钮typedef void (^PassValueBlock)(...

2019-02-25 23:49:34 4541

原创 Effective OC2.0学习笔记

多用字面量语法,少用与之等价的方法NSString *string = nil; NSArray *array = [NSArray arrayWithObjects:@"dsds",string,@"fdf", nil]; //NSArray *array2 = @[@1,@2,string];//如果用字面量,数组有这种有空对象的元素,编译时会直接报错 NSLog...

2019-01-30 22:17:43 237

原创 UIButton上换行显示主标题 副标题

用NSMutableAttributedString实现NSMutableAttributedString常见方法为某一范围内文字设置多个属性- (void)setAttributes:(NSDictionary *)attrs range:(NSRange)range;为某一范围内文字添加某个属性- (void)addAttribute:(NSString *)name value...

2019-01-30 22:16:17 803

原创 iOS 折线图,柱状图

在网上看了许多大家写的折线图,柱状图,有两种 如果只是简单的运用,可以自己用动画写一个github地址在网上看了许多大家写的折线图,柱状图,有两种要点有:UIBezierPath用于定义一个直线/曲线组合而成的路径,并且可以在自定义视图中渲染该路径。1 .+ (instancetype)bezierPath;初始化一个UIBezierPath对象。2 .路径操作函数-...

2019-01-30 19:43:17 664

原创 iOS FMDB使用详解

简述一个针对IOS的SQlite API封装的第三方库FMDB,FMDB对SDK中的API做了一层封装,使之使用OC来访问,使用方便而且更熟悉。pod FMDB@FMDB主要涉及两个类,FMDatabase和FMResultSet 下载完FMDB源码后把文件拖到工程中具体使用赋上一系列基本操作,增删改查#import "ZJIHomeDataBaseHandle.h"@implem...

2018-12-23 21:04:53 437

原创 FMDB使用

FMDB是一种数据缓存的第三方库获取数据库文件的路径NSString *doc = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) firstObject]; fileName = [doc stringByAppendingPathComponent:@"downCo...

2018-12-16 18:02:44 266

原创 tableView的cell高度自适应

1,给定内容,宽度,文本的一些属性计算高度+ (CGFloat)getHeight:(NSString *)content{ CGRect rect = [content boundingRectWithSize:CGSizeMake(kWidth - 24 - 30 - K_margin, CGFLOAT_MAX) options:NSStringDrawingUsesLineFrag...

2018-12-09 17:38:24 300

原创 iOS 网络请求顺序执行

参考文章(iOS-网络请求依次执行,NSOperationQueue与dispatch_semaphore)[https://www.jianshu.com/p/342b2ffbdd97]NSOperationQueue *queue = [[NSOperationQueue alloc] init]; queue.maxConcurrentOperationCount = 2;...

2018-12-09 17:37:06 2234 2

原创 UITableView cell的展开与收起

许多app的界面由于cell太长,需要展开与收起实现思想:cell的赋值与计算高度都需要model,跟model相关,所以可以在model那设置一个属性来控制cell是展开还是收起。由于tableView的dataSource写在View里,而我的delegate写在Controller,所以需要将view里的button点击事件通过协议将其传给controller,写响应的点击事件...

2018-12-09 17:32:58 1857 1

原创 Category 学习

Category是Objective-C2.0之后添加的语言特性,Category又叫分类、类别、类目,能够在不改变原来类内容的基础上,为类增加一些方法。除此之外,Category还有以下功能:(1)将类的实现分开写在几个分类里面。这样做的好处:可以减少单个文件的体积可以把不同的功能组织到不同的Category里可以由多个开发者共同完成一个类可以按需加载想要的category(2...

2018-11-25 17:11:03 140

原创 iOS GCD

1.GCD的好处:GCD可用于多核的并行运算会自动利用更多的CPU内核GCD会自动管理线程的生命周期(创建线程,调度任务,销毁线程)程序员只需告诉GCD想要执行什么任务,不需要任何线程管理代码2.任务和队列任务:执行操作同步执行和异步执行区别:是否等待队列任务的执行结束,以及是否具备开启新线程的能力。同步执行: 只能在当前线程中执行任务,不具备开启新线程的能力。异步执行:异...

2018-10-20 19:47:18 800 1

原创 JSONModel使用

定义JSONModel 是一个能够快速巧妙的创建数据模型的库一个接口用一个Model即可,但是要记得在.m中实现创建的多个model记得导入第三方库 JSONModel使用一个例子说明:要解析的大概是这样{ date: "20140523", stories: [ { title: "中国古代家具发展到今天有两个...

2018-10-20 19:46:19 847

原创 iOS Block详解

Block简述用来实现匿名函数的特性,常用于GCD.动画,排序及各类回调使用声明Block变量Block变量的声明格式为: 返回值类型(^Block名字)(参数列表);赋值Block变量的赋值格式为: Block变量 = ^(参数列表){函数体};也可在声明block变量的同时进行赋值int(^myBlock)(int) = ^(int num){ return num ...

2018-10-14 13:53:09 306 3

原创 IOS版计算器心得

为了不将其全写在ViewController中,分工明确,有了我们的ios MVC设计模式,Model 数据View 界面,呈现方式Controller 数据与界面交互三者之间的关系用那张著名的图就可以表示现在来说计算器Model里写表达式求值算法(建议学学中缀转后缀)View里写计算器的界面Controller里写一些buttton的点击事件及输入检查(稍后会说)我...

2018-10-14 13:52:03 756 1

原创 ios天气预报小记

UI本次天气预报的总体就是呢,在scrollerView上自定义的UIView的tableView加在视图上,每次添加一个城市,加一个视图,更新数据然后就是传值操作,属性传过去,协议传回来 大概就是这样,一个scrollerView tableView再理解 没有注册cell,而是自定义直接写那种cell时,要将数据与创建视图分开,这样只创建一次,数据每次都更新。if(ind...

2018-08-18 10:14:08 821 5

原创 NSURLSession详解

http 允许传输各种各样的数据 客户端——-服务器。 http协议规定:一个完整的由客户端发给服务器的http请求中包含以下内容 请求头:包含了对客户端的环境描述,客户端请求信息等 请求体:客户端发给服务器的具体数据,比如文件数据(post请求才会有) 客户端向服务器发送请求,服务器当作出响应 一个完整的http响应中包含以下内容: 响应头:包含了对服务器的描述,对返回数据的描述...

2018-08-18 10:10:57 1035

原创 tableViewCell之再操作

在开发中经常会遇到这种需要删除cell的操作, 代码如下-(UITableViewCellEditingStyle)tableView:(UITableView *)tableView editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath{ return UITableViewCellEditingStyleDelete;/...

2018-08-10 16:31:33 127 1

原创 OC版学生管理系统小记

初始化一定要初始化,不然显示不出来,或者为空的话, 然后可能检查别的东西很久。。。。。 在数据类中封装一些方法,可以在检查数据中创建类对象直接使用,方便简洁检查输入是否全为纯数字- (BOOL)isPureInt:(NSString*)string{ NSScanner* scan = [NSScanner scannerWithString:string]; ...

2018-08-09 20:41:08 327 2

原创 IOS 跳转页面的三种方式

1、改变window的根视图self.window.RootViewController = VC;2、模态弹出modal,(模态视图出现的场景一般是临时弹出的窗口,譬如:登陆窗口。) [self presentViewController:nextVC animated:YES completion:nil];//从当前界面到nextVC[self dismissVie...

2018-08-04 09:38:53 7343 1

原创 tableView的理解以及tableViewCell的使用

tableView的格式区别选择UITableViewStyleGrouped方式会全部显示,UITableViewStylePlain则在 上拉的时候,把组头顶在顶部 使用UITableViewStyleGrouped风格时,上面会出现 headView ,大概占了35 个像素。 tableView.tableHeaderView = [[UIView alloc ...

2018-08-04 09:25:44 3263

原创 关于UITableViewCell和ViewController

假如你自定义了一种cell, 但是有几个cell类型相同都要用,问题是如果你把它写成一个section 中间就会没有分隔栏 如下图 一种办法,你可以写成三个section,还有一种办法:在自定义cell时加一个分隔栏图片,形成这样的效果 * 对于在一个ViewController打开新的ViewController * - (void)showToast{ //...

2018-07-28 10:47:08 319 2

原创 关于UITabBarController

UITabBarController控件及其相互关系UITabBarController 包含了viewcontrollers、tabBar等 UITabBar NavigaitonBar就是底部的选择栏 主要对UITabBarItem进行管理 并负责展示底部选择栏的外观背景 UITabBarItem 继承UIBarItem,增加了selected、unselected时不...

2018-07-28 10:26:46 124

原创 UIWindow对象

当程序框架初始化成功调用 //调用此函数 //此函数用来初始化整个程序框架结构 //整个程序对IOS开发工程师的入口函数- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { // Override point ...

2018-07-01 18:54:37 135

空空如也

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

TA关注的人

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