- 博客(67)
- 资源 (2)
- 收藏
- 关注
原创 ios宏展开
前言:近期看了一下RAC中的宏命令,发现其中的宏命令一环扣一环,环环相扣,把我都给整懵逼了... 通过深入学习,终于能看懂了,写个小demo秀一波操作. 源码:#define JK_Prepare_Subviews(supperView, ...)\JK_metamacro_foreach(JK_Add_Subview, supperView, __VA_ARG...
2018-11-02 21:25:02
501
原创 imageNamed和imageWithFile
imageNamed默认加载图片成功后会内存中缓存图片,这个方法用一个指定的名字在系统缓存中查找并返回一个图片对象.如果缓存中没有找到相应的图片对象,则从指定地方加载图片然后缓存对象,并返回这个图片对象.而imageWithContentsOfFile则仅只加载图片,不缓存.大量使用imageNamed方式会在不需要缓存的地方额外增加开销CPU的时间来做这件事.当应用程序需要加载一张比较大
2016-08-15 20:23:37
637
原创 KVC和KVO
** KVC: * 1.字典转模型 ,简化代码量 * 2.修改系统的只读变量:例如自定义tabBar的时候,由于tabBar是只读属性,只能用KVC赋值. * 3.可以任意修改一个对象的属性和变量\(包括私有变量\) * 4.可以通过运算符层次查找对象的属性,setValue:forKeyPath:假如person这个类中我们又
2016-08-14 02:32:34
509
原创 Self和Super
@implementation Son : Father- (id)init{ self = [super init]; if (self) { } return self;}这段代码 估计很多人都 写烂了,就算没写烂,xcode 自动生成的 我们也看吐了。 好吧,来说说原来,上来就是 : 这个其实就是 在子类实现初始化前 调用父类的init
2016-08-12 23:35:23
414
原创 Bitcode适配指南
随着XCode7的发布,Apple提供了一项新的技术来支持App瘦身功能,那就是Bitcode。本文章将会结合自己在支持bitcode过程中遇到的问题,来阐述支持bitcode的过程。BitCode是什么Bitcode is an intermediate representation of a compiled program. Apps you upload to iTunes Con
2016-08-11 13:22:23
532
原创 http 的post与get区别与联系
(1)get是从服务器上获取数据,post是向服务器传送数据。(2)在客户端,Get方式在通过URL提交数据,数据在URL中可以看到;POST方式,数据放置HTML HEADER内提交。(3)对于get方式,服务器端用Request.QueryString获取变量的值,对于post方式,服务器端用Request.Form获取提交的数据。(4)GET方式提交的数据最多只能有1024字节,
2016-08-11 02:39:53
383
原创 多线程的作用和使用场景
(1)、多线程的作用:可以解决负载均衡问题,充分利用cpu资源。为了提高CPU的使用率,采用多线程的方式去同时完 成几件事情而互不干扰,(2)、大多情况下,要用到多线程的主要是需要处理大量的IO操作时或处理的情况需要花大量的时间等等,比如:读写文 件、视频图像的采集、处理、显示、保存等。(3)、ios有三种主要方法:1、NSThread。2、NSOperation。3、GCD。
2016-08-11 02:36:09
3828
原创 runtime的使用
#import "ViewController.h"#import //#import "Cat.h"#import "AnimalProtocol.h"@interface ViewController ()@end@implementation ViewController- (void
2016-08-09 23:42:07
405
原创 runtime理解
一:基本概念Runtime基本是用C和汇编写的,Objective-C 从三种不同的层级上与 Runtime 系统进行交互,分别是通过 Objective-C 源代码,通过 Foundation 框架的NSObject类定义的方法,通过对 runtime 函数的直接调用。大部分情况下你就只管写你的Objc代码就行,runtime 系统自动在幕后辛勤劳作着。RunTime
2016-08-09 23:11:33
654
原创 二维码的扫描
#import "ViewController.h"#import #import #import "Masonry.h"@interface ViewController ()AVCaptureMetadataOutputObjectsDelegate>@property (weak,nonatomic)IBOutletUI
2016-08-08 21:07:05
413
原创 计步器
//需要走一会label才会更新.....#import "ViewController.h"#import @interface ViewController ()@property (weak,nonatomic) IBOutletUILabel *textLabel;@property (nona
2016-08-08 16:32:02
522
原创 磁力计
- (void)viewDidLoad { [superviewDidLoad]; self.manager = [CMMotionManagernew]; if ([self.managerisMagnetometerAvailable]) { self.manager.magne
2016-08-08 00:35:13
765
2
原创 加速计
//旧api- (void)viewDidLoad { [super viewDidLoad]; // 1. 获取加速计对象 UIAccelerometer *accelelrometer = [UIAccelerometer sharedAccelerometer]; // 2. 设置间隔 acce
2016-08-08 00:34:08
417
5
原创 HTTP的通信的 发送请求、接收响应
请求:一个请求包含以下内容: 请求行:包含了请求方法、请求资源路径、HTTP协议版本GET/MJServer/resources/images/1.jpg HTTP/1.1请求头:包含了对客户端的环境描述、客户端请求的主机地址等信息Host:192.168.1.105:8080 // 客户端想访问的服务器主机地址User-Agent:Mozilla/5.0 (Mac
2016-08-07 00:11:31
546
原创 NSOperation 和 GCD 的区别
1. GCD是底层的C语言构成的API,而NSOperationQueue及相关对象是Objc的对象。在GCD中,在队列中执行的是由block构成的任务,这是一个轻量级的数据结构;而Operation作为一个对象,为我们提供了更多的选择; 2. 在NSOperationQueue中,我们可以随时取消已经设定要准备执行的任务(当然,已经开始的任务就无法阻止了),而GCD没法停止已经加入qu
2016-08-07 00:01:44
3894
原创 系统导航
#import "ViewController.h"#import #import @interface ViewController ()@property (weak,nonatomic) IBOutletMKMapView *mapView;@property (weak,nonatomic) IBOutletUITextF
2016-08-06 00:00:35
453
原创 mapView的基本使用
#import "ViewController.h"#import #import @interface ViewController ()@property (nonatomic ,strong)CLLocationManager *manager;@property (weak,nonatomic) IBOut
2016-08-05 23:59:15
4509
原创 地理编码与反地理编码
#import "ViewController.h"#import @interface ViewController ()@property (weak,nonatomic) IBOutletUITextField *addressField;@property (weak,nonatomic) IBOutlet
2016-08-05 00:12:40
641
原创 计算地图上两点之间的距离
#import "ViewController.h"#import @interface ViewController ()@end@implementation ViewController- (void)viewDidLoad { [superviewDidLoad];
2016-08-05 00:10:58
953
原创 地图定位
//1.导入库//2.配置info.plist//如果设置了后台定位#import "ViewController.h"#import @interface ViewController ()CL
2016-08-04 01:48:49
345
原创 Objective-C isa 指针 与 runtime 机制
一.isa指针要认识什么是isa指针,我们得先明确一点:在Objective-C中,任何类的定义都是对象。类和类的实例(对象)没有任何本质上的区别。任何对象都有isa指针。那么什么是类呢?在xcode中用快捷键Shift+Cmd+O 打开文件objc.h 能看到类的定义:可以看出:Class 是一个 objc_class 结构类型的指针, id是一个 objc_ob
2016-08-04 01:41:31
380
原创 链式编程
前言链式编程就是将多个方法用点语法链接起来,让代码更加简洁, 可读性更强.相信大家对Masonry都不陌生. 看下面这段代码:make.width.height.equalTo(0);相当于一句话调用了下面三个方法- (MASConstraint *)width { return [self addConstraintWithLayoutAttribute:NSLayout
2016-08-03 00:29:59
1950
原创 iOS真机调试-Your maximum App ID limit has been reached. You may create up to 10 App IDs every 7 days
真机调试问题Your maximum App ID limit has been reached. You may create up to 10 App IDs every 7 days.你的App ID超过了最大限制,7天最多能创建10个App ID1.出现这种情况,直接用上一次的Bundle ID就行了,因为免费App ID账号苹果官方有所限制直接更换以前在真机上
2016-08-03 00:29:50
3697
原创 单例模式的设计
#import "NetworkTools.h"//GCD方式实现单例@implementation NetworkTools+ (instancetype)shareTools{static id instance;static dispatch_once_t onceToken;dispatch_once (&onceToken),^{//这个方法只会执行一
2016-07-31 08:52:48
337
原创 NSOperation
NSOperation: 抽象类,不能直接使用,需要使用其子类.(类似的类还有核心动画)两个常用子类: NSInvocationOperation(调用) 和 NSBlockOperation(块); 两者没有本质区别,后者使用 Block 的形式组织代码,使用相对方便.NSInvocationOperation在调用start方法后,不会开启新的线程只会在当前线程中执行。NSBl
2016-07-31 01:45:31
239
原创 多线程的作用和实现方法
(1)、多线程的作用:可以解决负载均衡问题,充分利用cpu资源 。为了提高CPU的使用率,采用多线程的方式去同时完成几件事情而互不干扰,(2)、大多情况下,要用到多线程的主要是需要处理大量的IO操作时或处理的情况需要花大量的时间等等,比如:读写文件、视频图像的采集、处理、显示、保存等。 (3)、iOS中多线程的方法主要有三种:1、NSThread。2、NSOperation。3、GCD。
2016-07-30 01:50:30
409
原创 iOS线程和进程的区别和联系
线程和进程的区别主要在于它们是不同的操作系统资源管理方式。进程有独立的地址空间,一个进程崩溃后,在保护模式的影响下不会对其他进程产生影响,而线程只是一个进程中的不同执行路径。线程有自己的堆栈和局部变量,但线程之间没有单独的地址空间,一个线程死掉就等同于整个进程死掉,所以多进程的程序要比多线程的程序健壮,但在进程切换时,耗费资源较大,效率要差一些。但对于一些要求同时进行并且又要共享某些变量的并发操作
2016-07-30 01:50:10
1175
原创 多线程开发
优点:1.使用线程可以把占据时间长的程序中的任务放到后台去处理2.用户界面可以更加吸引人,比如用户点阿基了一个按钮去触发某些事情的处理,可以弹出一个进度条来显示处理的进度3.程序的运行效率可能提高4.在一些等待的任务上比如用户输入,文件读写和网络首发数控等,线程就比较有用了.缺点:1.如果有大量的线程,会影响性能,因为操作系统需要在它们之间切换2.更多的线程需要
2016-07-29 02:11:30
299
原创 CADisplayLink
CADisplayLink是一种以屏幕刷新频率触发的时钟机制,每秒钟执行大约60次左右CADisplayLink是一个计时器,可以使绘图代码与视图的刷新频率保持同步,而NSTimer无法确保计时器实际被触发的准确时间使用方法:定义CADisplayLink并制定触发调用方法将显示链接添加到主运行循环队列
2016-07-29 02:11:20
305
原创 一个动画怎么实现
以转场动画为例:1> 创建CATransition对象 CATransition *animation = [CATransition animation];2> 设置运动时间(即动画时间) animation.duration = DURATION; 3> 设置运动type(类型) animation.type = type; if (subt
2016-07-28 00:15:38
343
原创 转场动画
CATransition-转场动画, 作为CAAnimation的子类,用于做转场动画,能够为层提供移出屏幕和移入屏幕的动画效果。iOS比Mac OS X的转场动画效果少一点. UINavigationController就是通过CATransition实现了将控制器的视图推入屏幕的动画效果.如下是转场动画的过渡效果: 使用UIView的动画函数,实现转场动画1> 单视图:
2016-07-28 00:15:17
398
原创 Core Animation(核心动画)
CoreAnimation也就是核心动画, 是一组非常强大的动画处理API, 可以使用少量的代码做出绚丽的效果, 是直接作用在CALayer上的, 并非UIView,并且Core Animation的动画执行过程都是在后台操作,不会阻塞主线程.所有动画都是作用在CALayer上的, 当把动画添加到Layer上, 是不直接修改它的属性, Core Animation维护了两个平行layer的层次
2016-07-27 00:18:54
425
原创 Core Graphics 框架
Core Graphics是基于C的API,可以用于一切绘图操作Core Graphics 和Quartz 2D的区别quartz是一个通用的术语,用于描述在IOS和MAC OS X ZHONG 整个媒体层用到的多种技术 包括图形、动画、音频、适配。Quart 2D 是一组二位绘图和渲染API,Core Graphic会使用到这组API
2016-07-27 00:18:42
349
原创 UIKit和Core Graphics绘图——字符串,线条,矩形,渐变
概述CoreGraphics也称为Quartz 2D 是UIKit下的主要绘图系统,频繁的用于绘制自定义视图。Core Graphics是高度集成于UIView和其他UIKit部分的。Core Graphics数据结构和函数可以通过前缀CG来识别。视图可以通过子视图、图层或实现drawRect:方法来表现内容,如果说实现了drawRect:方法,那么最好就不要混用其他方法了
2016-07-24 23:10:40
359
原创 实现cell的动态的行高
如果希望每条数据显示自身的行高,必须设置两个属性, 1.预估行高, 2.自定义行高设置预估行高 tableView.estimatedRowHeight = 200设置定义行高 tableView.rowHeight =UITableViewAutomaticDimension如果要让自定义行高有效, 必须让容器视图有一个自下而上的约束
2016-07-24 23:10:28
483
原创 UITableView的性能优化? 滑动的时候有种卡的感觉是为什么?怎么解决?
在使用第三方应用时,却经常遇到性能上的问题,普遍表现在滚动时比较卡,特别是table cell中包含图片的情况时。 实际上针对性地优化一下就可以解决tableView滑动的时候卡顿的问题, 在iOS应用中,UITableView应该是使用率最高的视图之一了。iPod、时钟、日历、备忘录、Mail、天气、照片、电话、短信、 Safari、App Store、iTunes、Game Center⋯几乎
2016-07-23 02:22:53
374
原创 富文本
在iOS开发中,不免会遇到给一行文字设置不同的颜色.这个时候,最先想到的可能是多写几个UILabel,但是这样未免也太麻烦了,还有就是给文字加下划线,删除线等等...类似于这样的功能,其实在iOS开发中可以使用NSAttributedstring和NSMutableAttributedString来解决.称其为富文本.那我们就来看看如果使用富文本来创建出丰富多彩的文字.这里我们都使用UILab
2016-07-23 02:22:30
479
原创 响应者链条
1.概念UIResponder类,是UIKIT中一个用于处理时间响应的基类.窗口上的所有事件触发,都由该类响应.所以,窗口上的view及控制器都是派生于该类的,列入UIView,UIViewController等.调用UIResponder类提供的方法或属性,我们就可以捕捉到窗口上的所有响应事件,并进行处理响应者链条是由多个响应者对象连接起来的链条,其中响应者对象是能处理事件的对象,所有的
2016-07-21 23:36:42
300
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人