IOS
文章平均质量分 79
chase_cc
其实每个人都不曾因为苦而放弃,只会因为扛而成长,重要的不是什么时候开始,而是开始之后就不要停止。
展开
-
iOS中多线程同步技术(加锁/解锁)
我们在开发过程中可能会 遇到 多个线程访问 同一块资源,比如:多个线程访问同一个文件,那么多个线程在对这个文件进行读写操作的时候,很容易引发数据错乱和数据安全的问题解决这个问题,一般采用 同步线程技术,对同一块资源进行加锁和解锁模拟一个场景,比如卖票@interface ViewController ()@property (assign, nonatomic) int ticketsCo...原创 2020-03-14 22:22:12 · 544 阅读 · 0 评论 -
iOS中的延迟执行和定时器
延迟执行方式一[self performSelector:@selector(endAd) withObject:nil afterDelay:3];//3秒后 执行下面这个方法- (void)endAd { NSLog(@"延迟执行");}//取消延迟执行//取消定时器- (void)cancelEndAd { [NSObject cancelPr...原创 2019-06-05 14:23:36 · 476 阅读 · 0 评论 -
iOS缓存处理类 NSCache
NSCache用来进行缓存处理,类似NSdictionary的使用在收到内存警告时会主动调用removeAllObject线程安全,在多线程操作中,不需要对NSCache加锁NSCache的key是对对象进行Strong引用,存储数据 // NSCache 缓存处理类 NSCache *cache = [[NSCache alloc] init]; //...原创 2019-06-05 17:21:32 · 219 阅读 · 0 评论 -
iOS之常用的枚举
枚举枚举相信大家都不陌生,其分类有几种普通枚举typedef enum {}枚举名称typedef enum { ProductTypehaiyun = 1, ProductTypeAir = 2 }ProductType;定义类型的枚举-typedef NS_ENUM(NSInteger,名称){}//定义类型typedef NS_ENUM(N...原创 2019-06-05 17:41:36 · 1470 阅读 · 0 评论 -
iOS之NSURLSession断点下载
之前简单说了一些 NSURLSession的用法和介绍简单的断点下载NSURLSession 提供几个方法用于开始(resume),暂停(suspend),取消(cancel)请求其中取消分为2种,不可恢复取消 cancel,和可恢复取消 cancelByProducingResumeData开始下载 //创建URL NSString *urlStr = @"...原创 2019-06-12 16:07:48 · 790 阅读 · 0 评论 -
iOS之AFN框架的使用(文件下载和上传)
AFN我们在日常开发中,经常使用到网络请求,之前已经简单的说过,网络的概念和请求数据和下载文件但是在日常开发中,我们一般会使用到 AFNetworking这个框架,请求数据,上传数据,下载数据文件简单的get和post数据请求get AFHTTPSessionManager *manager = [AFHTTPSessionManager manager]; /* ...原创 2019-06-13 11:49:31 · 6125 阅读 · 0 评论 -
iOS之网络概念和本地服务的搭载
基本概念客户端(Client):移动应用(iOS和安卓)服务器(Server):给客户端提供数据或者资源的机器(其实就是一台电脑)请求(Request):客户端向服务器请求数据的一个行为方式响应(Response):服务器对客户端的请求做出的反应,把数据返回给客户端URL(Uniform Resource Locator):统一资源定位符,一个标识,根据这个标识可以准确的找到你要访问的...原创 2019-06-07 09:10:40 · 305 阅读 · 0 评论 -
iOS之block(一)
Blockblock在我们日常开放中是经常使用的,用途非常广泛用来保存一段代码块block是一个对象1. 声明返回值(^名称)(参数) void(^block)(void);2.block的定义方式2.1常见的定义方式没有返回值,没有参数,void省略//隐藏void void(^block1)(void) = ^(){ }; ...原创 2019-06-19 09:22:46 · 165 阅读 · 0 评论 -
iOS之数据安全加密
Base64编码可以将任意的二进制数据进行Base64编码被编码的数据只用65个字符就能表示成文本文件原理将所有的字符转化成ASCII码在将对应的ASCII码转为8位二进制然后对二进制进行归组,每3个归为一组,不足3个的补e,这样变成了24位,在对其拆分成4组,每组6位统一在6位二进制前补2个0组成8位,然后将二进制转为十进制最后在Base64编码表中获取十进制对应的base6...原创 2019-06-14 16:05:03 · 448 阅读 · 0 评论 -
iOS之线程的概念和NSThread(一)
基础概念进程:一个运行的应用程序,就是一个进程(比如:你iphone上的QQ,微信,MAC电脑上的迅雷,Xcode等)每一个进程之间是相互独立的,在内存中开辟开间的一个打开应用程序不一定是一个进程(比如:QQ程序,你开启多个QQ账号登录,就对应的多个进程)线程:一个进程要执行任务的片段,一条进程至少要有一个线程一个应用程序的所有任务都要在线程中执行多线程:是一个进程开启了多条线...原创 2019-06-03 20:59:33 · 148 阅读 · 0 评论 -
iOS之常见的一些小语法(关键字)
泛型__kindofconst原创 2019-06-15 09:45:25 · 178 阅读 · 0 评论 -
iOS之线程(二)GCD
概念GCD:Gtand Central Dispatch 中枢调度器GCD主要解决的是多核并行运算GCD是自动管理线程的生命周期的任务要执行的操作同步函数:在当前线程中执行任务,不具备开启新线程的能力异步函数:可以在新的线程中执行任务,具备开启新线程的能力队列用来存放任务并发队列(异步函数才有效)串行队列一般使用情况声明一个任务将任务添加到队列中GC...原创 2019-06-04 15:28:36 · 200 阅读 · 0 评论 -
iOS中的iOS9之前的get和post请求
网络请求在前面说过网络的一些概念和本地服务器的搭建可以点击这里查看get请求get同步请求/创建URL NSURL *url = [NSURL URLWithString:@"http://localhost/iOS/demo.json"]; //创建请求 NSURLRequest *re = [[NSURLRequest alloc] init...原创 2019-06-11 09:02:00 · 1631 阅读 · 0 评论 -
iOS之json和XML的数据
JSON数据JSON是一种轻量级的数据交换格式必须是键值对存在键值必须是双引号(严格的规范),非严格的可以使用 单引号json字符串转化成OC对象//json数据 NSString *jsonStr =@"\{\"user_id\":\"1\",\"userName\":\"CC\"}"; NSData *data = [jsonStr ...原创 2019-06-11 15:38:23 · 235 阅读 · 0 评论 -
iOS之网络下载文件
文件下载文件下载在我们日常开发中经常使用到,比如:图片,音频,视频等简单的小文件下载get异步下载- (void)viewDidLoad { [super viewDidLoad]; NSString *urlStr = @"https://timgsa.baidu.com/timg?image&quality=80&size=b9999...原创 2019-06-11 15:39:20 · 3495 阅读 · 0 评论 -
iOS之NSURLSession(get和post请求)下载
NSURLSession他是一个基类,不能直接使用,需要使用它的子类NSURLSessionDataTask ,NSURLSessionUploadTaskNSURLSessionDownloadTaskNSURLConnection 在iOS9之后就过期了,苹果推出了NSURLSession类来代替NSURLConnectionget请求注意:NSURLSessionDat...原创 2019-06-12 09:54:11 · 1087 阅读 · 0 评论 -
iOS之Block(二)
block的原理本质之前简单说一下block的定义和基本的使用可以点击这边查看block的本质是一个OC对象,其内部也是有isa指针指向block这个对象其实是封装了函数调用和函数调用的环境我们定义一个简单的block,通过终端把mian.m文件转化为c++文件来查看里面的代码xcrun -sdk iphoneos clang -arch arm64 -rewrite-objc...原创 2019-06-28 14:47:46 · 154 阅读 · 0 评论 -
iOS多线程(三)NSOperation
NSOperation这个类是基于GCD,是苹果方便方便开发者封装的一个基类一般使用它的子类进行多线程操作NSInvocationOperationNSBlockOperation也可以自己封装一个继承自NSOperation自定义的子类使用步骤需要执行的操作封装到一个NSInvocationOperation/NSBlockOperation对象中将对象添加到队列中NS...原创 2019-06-05 14:22:59 · 122 阅读 · 0 评论 -
iOS之QuartZ 2D 绘图(二)位图上下文
hswhb原创 2019-05-27 14:23:59 · 144 阅读 · 0 评论 -
iOS之QuartZ 2D 绘图(一)
Quartz2DQuartz2D是苹果封装的一个库,针对iOS和os系统绘制不同的类型的制图方式图形上下文(一种数据类型,类似int,double)数据类型(CGContextRef)不同的上下文(数据类型)可以绘制不同的类型(pdf,bitmap,layer,window,ptinter)进而上面5中类型,对应不同的上下文1. 绘制简单图形 -> 画线在自定义的View我...原创 2020-05-15 08:53:36 · 320 阅读 · 0 评论 -
批量删除
关于删除在应用中很多也很常见,今天就是分享一下 细节性的问题, 问题:解决循环利用问题,删除时需要注意数组越界问题(更改模型数据,不能更改控件)1.建立模型数据并有一个标识(来标识它是否选中)来标记数据模型2.在自定义的cell中赋值3,在控制器选中的状态中取反代码:1.模型#import @interface JCModel原创 2016-07-23 11:12:18 · 272 阅读 · 0 评论 -
通知中心 NSNotificationCenter
首先了解一下通知模式通知模式---就是一个对象能够给其他任意数量的对象广播信息,对象之间没有耦合关系.每一个应用程序都有一个通知中心 NSNotificationCenter的实例,专门协助不同的对象之间的消息传递,任何的对象都可以通过通知中心发布信息,来描述自己做要什么事情,其他感兴趣的对象(Observer)可以监听这个通知 如下图:A对象 发布一个通知 对这个通知 感兴趣的原创 2016-07-23 12:11:49 · 266 阅读 · 0 评论 -
iOS应用存储数据的常用的方式之plist和归档
iOS应用创建的数据存储方式plist文件,是XML属性的列表形式ios 的偏好设置,就是基于plist文件NSKeyedArchiver归档(遵循NSCodeing协议)SQLite(需要自己写sql语句)Core Data 苹果对SQLite的一个封装今天我们先来说说plist文件,需要知道一个概念沙盒文件每一个iOS应用都有自己的沙盒文件,与其他...原创 2019-04-20 21:32:43 · 582 阅读 · 0 评论 -
NSFileManager文件和文件夹的操作
NSFileManager的文件操作上面中简单的介绍了数据存储,但是在获取数据,要存储时,一般需要创建一个单独的文件或者文件夹报保存你要存储的数据,所以要介绍一下NSFileManager,这个很重要,在日常开发中会经常使用到这个类NSFileManager用法NSFileManager使用了单例模式使用defaultManager方法可以获得那个单例对象 objc [NSFileMa...原创 2019-04-21 14:30:56 · 4598 阅读 · 0 评论 -
IOS 应用程序的基础设置
iOS应用程序的基础设置1.LaunchScreen文件LaunchScreen文件实在Xcode7推出的,主要是设置应用程序的启动图片,其实现原理:在LaunchScreen设置好图片之后,系统会自动截取这张图片,作用应用程序的启动图片查看生成的启动图片的方式获取⽅方法: NSLog(@"%@",NSHomeDirectory());找到Library->Caches-&g...原创 2019-04-17 10:05:15 · 201 阅读 · 0 评论 -
UIApplication对象和AppDelegate代理方法
UIApplication对象UIApplication是一个单例对象一个应用程序的象征操作一个应用程序只有一个UIApplication对象,获取到UIApplication对象就相当于获取到应用程序1.应用程序图标红色提醒数字 UIApplication *app = [UIApplication sharedApplication]; // 设置appIcon提醒数字,必须注...原创 2019-04-17 12:24:19 · 388 阅读 · 0 评论 -
iOS的APP的启动原理和布局(业务拆分和C弱化降低耦合)
APP的启动原理我们知道程序的入口是mian函数int main(int argc, char * argv[]) { @autoreleasepool { return UIApplicationMain(argc, argv, nil, NSStringFromClass([CCAppDelegate class])); } }从上面的...原创 2019-04-17 15:32:09 · 206 阅读 · 0 评论 -
UIWindow窗口
UIWindowUIWindow 是一个特殊的UIView,一个APP 至少有一个窗口(UIWindow)每一个UIWindow必须有一个rootViewController,不然会报错UIWindow的这个属性windowLevel来设置窗口的的优先级根据APP的启动原理加载 窗口1.执行Main函数2.执行 UIApplicationMain函数,指定UIApplicatio...原创 2019-04-17 16:58:02 · 166 阅读 · 0 评论 -
iOS之动画(transform和UIView动画)
transform 形变这个UIView的属性,书友继承UIView的控件都具有这个属性形变,X/Y方向//相对于坐标的起始点做形变(最原始的位置) self.imageView.transform = CGAffineTransformMakeTranslation(0, 10); //相对于已经发生形变的地方 发生二次形变 self.imageView.transf...原创 2019-04-28 20:50:19 · 1227 阅读 · 0 评论 -
Storyboard和XIB加载控制器及控制器View的生命周期
UIStoryboard加载控制器1.加载箭头指向的控制器 self.window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds]; //创建 UIStoryboard对象 UIStoryboard *sb = [UIStoryboard storyboardWithName:@"Main" bu...原创 2019-04-19 20:02:19 · 441 阅读 · 0 评论 -
UINavigationController导航控制器(一)
导航控制器UINavigationController 导航控制器,用来管理子控制器其包含:UINavigationBar 导航条管理原则:push进如导航控制器,为栈顶控制器,栈顶控制器的View会被加到导航控制器中用来管理存储View的地方UINavigationController常见属性///自控制器@property(nonatomic,copy) NSArray<...原创 2019-04-24 21:46:08 · 1549 阅读 · 0 评论 -
UINacigationController的组成导航控制(二)
UINavigationController组成分析UINavigationController的包含组成包括导航条UINavigationBar(self.navigationController.navigationBar)内容区域(self.navigationController.viewControllers)工具条UIToolbar(self.navigationContro...原创 2019-04-24 21:51:59 · 282 阅读 · 0 评论 -
iOS之事件(一)
iOS的事件分类1 触摸事件(是开发中经常使用的事件)只有继承UIResponder的对象才能处理事件,对之做出响应,也称为响应者对象UIApplication,UIView,UIViewController都是继承UIResponder,都可以处理事件2 加速计事件(摇一摇,跑步计数等)3 远程控制事件(耳机切换歌曲)触摸事件处理的的方法开始触摸-(vo...原创 2019-05-05 19:31:58 · 156 阅读 · 0 评论 -
UINavigationController中UINavigationBar的透明例子(三)
在上一篇文章有介绍 导航控制器的组成,是有3部分,这里不再重复可以点击这里查看今天主要说的是 在个人信息页,常用的一个小例子,其中用的 导航条透明,黑线的处理效果图:从效果图中,我们知道,tableView ,UIimageView是同层级的注意:其中的tableView,imageView(钢铁侠)都是以superView的top部,并不是安全区域,不然的话 看不到效果,...原创 2019-04-25 14:30:08 · 666 阅读 · 0 评论 -
iOS事件(二)手势
iOS手势轻拍手势UITapGestureRecognizer- (void)viewDidLoad { [super viewDidLoad]; UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(hangdletap:)...原创 2019-05-09 20:05:21 · 144 阅读 · 0 评论 -
CoreData
作为一个IOS人士,这是第一次写自己的博客,关于CoreData数据有下面的说法:Core Data是一个功能强大的层,位于SQLite数据库之上,它避免了SQL的复杂性,能让我们以更自然的方式与数据库进行交互。Core Data将数据库行转换为OC对象(托管对象)来实现,这样无需任何SQL知识就能操作他们。Core Data位于MVC设计模式中的模型层,一般需要在设备原创 2015-09-10 20:34:36 · 288 阅读 · 0 评论