自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(57)
  • 收藏
  • 关注

转载 git命令行演练

显⽰示隐藏⽂文件 defaults write com.apple.finder AppleShowAllFiles -bool trueGIT演练
一.个人演练(命令行演练) 1.进入到⼯工作⽬录中,初始化一个代码仓库 git init 2.给该git仓库配置一个用户名和邮箱 git config user.name “why”
git config use...

2019-06-04 10:20:00 130

转载 GCD可以设置线程最大并发量

-(void)dispatchSignal{//crate的value表示,最多几个资源可访问dispatch_semaphore_t semaphore = dispatch_semaphore_create(2);dispatch_queue_t quene = dispatch_get_global_queue(DISPATCH_QUEUE...

2019-04-12 11:25:00 857

转载 Runtime的用法有哪几种

1,动态添加一个类,就像KVO一样, 系统是在程序运行的时候根据你要监听的类, 动态添加一个新类继承自该类, 然后重写原类的setter方法并在里面通知observer的.// 创建一个类(size_t extraBytes该参数通常指定为0, 该参数是分配给类和元类对象尾部的索引ivars的字节数。)Class clazz = objc_allocateClassPai...

2019-03-25 21:19:00 213

转载 如何监听app所有事件

1, 修改main方法int main(int argc, char * argv[]) { @autoreleasepool { return UIApplicationMain(argc, argv, NSStringFromClass([AppDelegate class]), NSStringFromClass([AppDelegate c...

2019-03-25 19:28:00 1201

转载 OC消息转发机制

OC消息发送机制: 使用运行时,通过selector 去快速查找IMP(函数指针)的过程。消息转发:IMP找不到的时候,通过一些方法做转发处理。#import "Person.h"#import "Dog.h"#import "Animal.h"#import <objc/runtime.h>@implementation Person...

2019-03-21 20:07:00 94

转载 AFNetworking实现文件下载

#import "ViewController.h"#import "AFNetworking/AFNetworking.h"@interface ViewController ()@end@implementation ViewController-(void)touchesBegan:(NSSet<UITouch *> *)...

2019-03-20 15:57:00 1204

转载 NSURLSessionDownloadTask实现断点下载,对下载任务进行暂停,取消,恢复

NSURLSessionDownloadTask不能实现离线断点下载因为该代理方法是直接将下载结果返回,而不是分步存储磁盘,因此离线断点下载可以使用NSURLSessionDataTask#import "ViewController.h"@interface ViewController ()<NSURLSessionDownloadDelegate>...

2019-03-20 11:58:00 349

转载 NSURLSession使用NSURLSessionDownloadTask实现大文件下载,监听下载进度

感觉到法国感受到附近开个户口登记#import "ViewController.h"@interface ViewController ()<NSURLSessionDownloadDelegate>@property (weak, nonatomic) IBOutlet UIImageView *imageView;@end@im...

2019-03-20 10:44:00 373

转载 NSURLSession使用NSURLSessionDataTask实现大文件下载,使用NSFileHandle实现一边接收数据,一边存到沙盒...

NSURLSession实现大文件下载,使用NSFileHandle实现一边接收数据,一边存到沙盒//文件句柄(指针) NSFileHandle实现边接收边写数据到沙盒中/*特点:在写数据的时候边写数据边移动位置使用步骤:(1)创建空的文件(2)创建文件句柄指针指向该文件(3)当接收到数据的时候,使用该句柄来写数据(4)当所有的数据写完,应...

2019-03-19 16:42:00 136

转载 NSURLSession发送POST请求

#import "ViewController.h"@interface ViewController ()<NSURLSessionDataDelegate>@property (nonatomic, strong) NSMutableData *totalData;@end@implementation ViewController...

2019-03-19 15:22:00 315

转载 NSURLConnection发送Get网络请求

//// ViewController.m// NSURLConnection使用//// Created by 李圣培 on 2019/3/15.// Copyright © 2019年 李圣培. All rights reserved.//#import "ViewController.h"@interface ViewContro...

2019-03-15 12:46:00 106

转载 Runloop内部的自动释放池

Runloop内部的自动释放池:自动释放池第一次创建:当Runloop启动的时候自动释放池最后一次销毁: 当Runloop退出的时候自动释放池其他时间的创建和销毁: 当Runloop即将进入休眠的时候,会把之前的自动释放池释放,重新创建一个新的自动释放池。转载于:https://www.cnblogs.com/dashengios/p/10530820.html...

2019-03-14 15:56:00 73

转载 监听Runloop的状态

-(void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event{ CFRunLoopObserverRef observerRef = CFRunLoopObserverCreateWithHandler(CFAllocatorGetDefault(), kCFRun...

2019-03-12 21:47:00 676

转载 如何增加按钮的点击间隔时间

也是写一个分类#import <UIKit/UIKit.h>@interface UIControl (FMGControl)@property (assign, nonatomic) NSTimeInterval acceptEventInterval;@end---------------下面是.m文件------...

2019-03-11 21:31:00 545

转载 如何增加button的点击范围

写一个UIButton的分类#import <UIKit/UIKit.h>@interface UIButton (EnlargeEdge)- (void)setEnlargeEdge:(CGFloat) size;- (void)setEnlargeEdgeWithTop:(CGFloat) top right:(CGFloat) ri...

2019-03-11 21:23:00 514

转载 定时器Timer的使用

//Runloop主线程的Runloop默认开启,不需要再去启动。子线程的Runloop需要手动开启。//#import "ViewController.h"@interface ViewController ()@property (nonatomic, strong)NSTimer *timer;@property (nonat...

2019-03-10 23:05:00 156

转载 NSCache

NSCache是苹果官方提供的缓存类,具体使用的 NSDictionary类似,在AFN和SDWebImage框架中用来管理缓存。苹果官方解释:NSCache在系统内存很低时,会自动释放对象。建议:在收到内存警告时,主动调用removeAllObject来释放对象。NSCache是线程安全的,在多线程操作中,不需要对NSCache加锁。NSCache只是对key进行stron...

2019-03-03 21:58:00 70

转载 GCD和NSOperation的区别

其实我们在通过NSOperation和GCD进行开发过程中,会发现两者执行的方式有许多相似之处,NSOperation和GCD参照对比,NSOperationQueue和dispatch_queue参照对比,但是两者之间还是有许多差别的,具体区别:GCD的核心是C语言写的系统服务,执行和操作简单高效,因此NSOperation底层也通过GCD实现,换个说法就是NSOperat...

2019-02-23 00:53:00 357

转载 NSOperation实现线程间通信

  //创建队列 NSOperationQueue *queue = [[NSOperationQueue alloc]init];  //封装操作  NSBlockOperation *op3 = [NSBlockOperation blockOperationWithBlock:^{ NSLog(@"执行耗时操作"+++++++...

2019-02-23 00:38:00 136

转载 NSOperation添加操作依赖和监听

//创建队列 NSOperationQueue *queue = [[NSOperationQueue alloc]init]; //封装操作 NSBlockOperation *op1 = [NSBlockOperation blockOperationWithBlock:^{ NSLog(@"1-----------%@...

2019-02-23 00:04:00 126

转载 自定义NSOperation

自定义操作:-(void)customOperation{ //创建队列 NSOperationQueue *queue = [[NSOperationQueue alloc]init]; //封装操作 XMGOperation *op = [[XMGOperation alloc]init];//自定义NSOperatio...

2019-02-22 23:30:00 74

转载 NSOperation的多线程

NSOperation基于GCD的封装,使用的步骤和GCD相似,①创建队列 ②封装操作任务。NSOperation有两种队列:主队列:NSOperationQueue *queue = [NSOperationQueue mainQueue];自定义队列(就是并发队列):NSOperationQueue *queue = [[NSOperationQu...

2019-02-22 21:41:00 80

转载 单例的实现(完整版代码)

#import "XMGTool.h"static XMGTool * _instance;//静态变量保证了单例的唯一性,静态变量是程序一开始就存在的@interface XMGTool ()<NSCopying, NSMutableCopying>@end@implementation XMGTool+(instanc...

2019-02-22 20:31:00 138

转载 GCD队列组的使用

dispatch_group_t group = dispatch_group_create(); dispatch_group_async(group, dispatch_get_global_queue(0, 0), ^{ NSLog(@"------CCCCCCCCC-------"); }); dispatch_gr...

2019-02-22 00:54:00 153

转载 GCD栅栏函数dispatch_barrier

需求: 有4个任务, 需要开启多条线程去执行。 有一个特殊任务0, 需要在1,2任务执行完后, 再执行3, 4任务。dispatch_queue_t queue = dispatch_queue_create("test", DISPATCH_QUEUE_CONCURRENT); dispatch_async(queue, ^{ ...

2019-02-21 23:58:00 195

转载 GCD快速迭代(遍历)

函数: 该方法会开启多条子线程, 主线程也会参与执行。 因此不要传主队列。dispatch_apply(10, dispatch_get_global_queue(0, 0), ^(size_t index) { });@param 10 指定重复次数 指定10次@param queue 追加对象的Dispatch ...

2019-02-21 23:00:00 312

转载 延迟执行的几种方法

第一种:  [self performSelector:@selector(run) withObject:nil afterDelay:2.0];第二种:  [NSTimer scheduledTimerWithTimeInterval:2.0 target:self selector:@selector(run) userInfo:nil repeats:N...

2019-02-20 23:13:00 1973

转载 关于GCD中同步函数+主队列产生死锁的一点理解

首先看个产生死锁的代码-(void)syncMain{ //获得主队列 dispatch_queue_t queue = dispatch_get_main_queue(); NSLog(@"start"); //同步函数 dispatch_sync(queue, ^{ NSLog(@"------ %@",[NSThread curr...

2019-02-19 22:07:00 162

转载 GCD概念理解:同步异步,并行串行

GCD核心概念:1,任务和队列。任务:要做什么队列:存放任务。GCD使用步骤:1,创建队列2,封装任务,把任务添加到队列中。封装任务的函数:同步函数:dispatch_sync 该函数不具备开辟线程的能力,不能开辟线程。      任务执行的方式: 同步异步函数:dispatch_async 该函数具备开辟线程的能力,可以开辟线程。...

2019-02-16 21:24:00 156

转载 线程间的通信

开辟新的线程:[NSThread detachNewThreadSelector:@selector(download) toTarget:self withObject:nil];[self performSelectorInBackground:@selector(download) withObject:nil];子线程与主线程的通信:[self ...

2019-02-16 20:27:00 65

转载 nonatomic与atomic

nonatomic 非线程安全的,适合内存小的移动设备,内部不会加锁。atomic 线程安全的,需要消耗大量的资源,内部会对setter方法加锁开发中的建议:1,所有的属性都声明为 nonatomic (如果不声明,默认是atomic)2,尽量避免多线程抢夺同一资源3,尽量将加锁,资源抢夺的业务逻辑交给服务端处理,减少移动客户端的压力。转载于:https://ww...

2019-02-15 23:59:00 121

转载 多线程安全----同步锁(互斥锁)

多条线程抢夺同一资源时,经常需要加锁,保证同一时间只能有一条线程操作一个资源。同步锁就是互斥锁格式:@synchronized(token) { }token:锁对象,要使用全局的对象,建议使用self{} 要加锁的代码段注意点:加多把锁是无效的。 要注意加锁的位置。互斥锁的优点: 能有效防止多线程因抢夺资源造成的数据安全问题互斥锁的缺点:需要消耗大量的c...

2019-02-15 23:24:00 387

转载 多线程之线程的状态有几种

线程从生到死有几种状态:创建(new)------就绪start-----------运行running-----------阻塞sleep----------死亡deadcpu调用线程是从可调度线程池中调用, 当线程阻塞时会移出可调度线程池。线程是不能直接从阻塞状态直接变成运行状态的, 需要先变成就绪状态,当cpu调用该线程时, 就会变成运行状态。控制线程的...

2019-02-15 22:00:00 1418

转载 NSString为什么经常用copy修饰,用strong会有什么问题?

@interface ViewController ()@property (nonatomic, strong) NSString *str1;@property (nonatomic, copy) NSString *str2;@end@implementation ViewController- (void)view...

2019-02-14 15:58:00 422

转载 多线程技术

多线程: 串行->针对一个线程中有多个任务,按顺序执行。    并行->多个线程的执行情况,同时执行。多线程优点: 提高程序的性能 缺点: 需要开销,程序更加复杂。多线程技术方案: pthread 适用于unix, Linux, Windows,可跨平台NSThread 面向对象,简单易用GCD 充分利用设备的多核,旨在替代NSThr...

2019-02-13 17:08:00 69

转载 关于汇编语言

Cpu操作内存, 通过寄存器操作,不是直接操作内存。高级语言编译成汇编语言, 汇编语言再编译成机器语言,机器语言再运行到计算机。汇编语言与机器语言 是一一对应的。可以编译与反编译。高级语言可以编译成汇编或机器语言,但是汇编几乎不可能还原成高级语言。转载于:https://www.cnblogs.com/dashengios/p/10368644.html...

2019-02-13 10:53:00 107

转载 Swift泛型

swift 特性, 可以定义泛型类型func SwapTwoValues <T>(value1: inout T, value2: inout T) { let p = value1 value1 = value2 value2 = p }参数为泛型, ...

2018-12-28 10:20:00 87

转载 swift关键字

final 不希望某个类被继承和重写。这种通常是一些辅助性质的工具类或者方法,特别那种只包含类方法而没有实例方法的类。比如MD5加密类这种,算法都十分固定,我们基本不会再继承和重写。mutating 方法前加, 为了能在该方法中 修改struct 或者Enum的变量。 Struct或者 Enum 中可以定义方法, 但是默认情况下,在方法中时不能修改变量的值的。s...

2018-12-28 10:01:00 73

转载 Swift开发注意点

如果定义属性的时候,没有初始化, 那么必须在后面加上?只要在构造方法(init方法)中对属性进行了初始化, 那么就不用加?如果是定义一个基本数据类型,那么建议直接赋值为 0 (因为在调用super.init时不会给该属性分配存储空间)Swift允许有同名的方法, 只要参数或者返回值不一样 即可。自定义构造方法,那么默认的构造方法就会失效。C和OC的结构体只能定义...

2018-12-23 22:31:00 153

转载 Mac上安装lua

curl -R -O http://www.lua.org/ftp/lua-5.2.3.tar.gztar zxf lua-5.2.3.tar.gzcd lua-5.2.3make macosxmake testluasudo make install转载于:https://w...

2018-07-05 14:50:00 164

空空如也

空空如也

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

TA关注的人

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