IOS学习笔记
mediaios
纸上得来终觉浅,绝知此事要躬行!(如有疑问,欢迎发送问题到邮箱[email protected])
展开
-
Concurrency之Introduce
并发也就是为了达到在同一时间点有两个任务在执行。现在的操作系统都有并发能力,即使它只有一个cup。cup通过给每个任务一个确定的轮轴时间片来实现这种能力。 然而,现在的科技能让我们有两个cup,这也就意味着我们能真正做到两个任务同时执行。简单来说,操作系统就会把任务分给cup,直到它处理完成。 大中央调度(Grand Central Dispatch),简称GCD,它是使用C语言实现的,里面有很翻译 2016-01-15 14:31:44 · 367 阅读 · 0 评论 -
Creating Concurrency with Threads
把任务放到线程中执行的时候,执行的那段代码要放在autoreleasepool中。翻译 2016-01-25 11:22:21 · 332 阅读 · 0 评论 -
Creating Timers
一、说明: 如题,我们本篇讲的是创建一个定时器。定时器它是一个对象,在指定的时间间隔触发一个事件。定时器必须在一个运行循环中。定义一个定时器对象创建一个不定期的定时器,这个定时器不执行任何操作,但是它是可用的,可以在任何你需要启动它的时候变得可用。一个定时的计时器,它是被添加到运行循环中的。 创建定时器的方式有很多,其中一个比较方便的方法是: + (NSTimer *)scheduledTim翻译 2016-01-25 10:30:26 · 465 阅读 · 0 评论 -
IOS界面适配
一、基本概念1.DPI(每英寸点数)DPI是Dots Per Inch(每英寸所打印的点数)的缩写,是打印机、鼠标灯设备分辨率的单位。这是衡量打印机打印精度的主要参数之一,一般来说,该值越大,表明打印机的打印精度越高。DPI是指每英寸的像素,也就是扫描精度。国际上都是计算一平方英寸面积内像素的多少。dpi越小,扫描的清晰度越低,由于受网络传输速度的影响,web上使用的图片都是72dpi,但是冲洗照片翻译 2016-01-06 18:24:49 · 512 阅读 · 0 评论 -
Concurrency5
一、Running Tasks Synchronously with Operations1.说明 当你想要运行一系列的同步任务的时候,你可以创建operations来启动它。 eg: 看如下代码#import "ViewController.h"@interface ViewController ()@property (nonatomic, strong) NSInvocationOper翻译 2016-01-21 18:38:32 · 474 阅读 · 0 评论 -
Concurrency4
一、GCD中的延时操作1.关于延迟操作的说明 我们在程序中经常用到延迟一段时间后执行某段代码,通常情况下我们利用的是NSObject中的performSelector:withObject:afterDelay方法。 eg: - (void)printString:(NSString *)paramString{ NSLog(@"%@",paramString);} - (void)翻译 2016-01-20 17:41:26 · 819 阅读 · 0 评论 -
Concurrency3
一、 UI和GCD的联系有两种方式在主线程上创建任务,两种方式都是异步的,这可以保证你的app运行流畅,无论是有些任务是否被卡住: dispatch_async 函数:Executes a block object on a dispatch queue. dispatch_async_f 函数: Executes a C function on a dispatch queue. 注意:d翻译 2016-01-15 18:44:36 · 404 阅读 · 0 评论 -
23-向服务器发送JSON、url转码、多值参数
1)发送json给服务器- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{ // 1.URL NSURL *url = [NSURL URLWithString:@"http://localhost:8080/MJServer/order"]; // 2.请求 NSMutableURLR转载 2015-05-18 15:22:06 · 846 阅读 · 0 评论 -
Quartz2D~图片裁剪
代码://// QiDraw.m// //// Created by QiZhang on 11/26/15.////#import "QiDraw.h"@implementation QiDraw// Only override drawRect: if you perform custom drawing.// An empty implementation adverse转载 2015-11-26 19:03:39 · 497 阅读 · 0 评论 -
Quartz2D基础
一、对Quartz2D的介绍Quartz 2D是一个二维图形绘制引擎,支持iOS环境和Mac OS X环境。我们可以使用Quartz 2D API来实现许多功能,如基本路径的绘制、透明度、描影、绘制阴影、透明层、颜色管理、反锯齿、PDF文档生成和PDF元数据访问。在需要的时候,Quartz 2D还可以借助图形硬件的功能。Quartz 2D在图像中使用了绘画者模型(painter’s model)。翻译 2015-11-26 18:36:10 · 372 阅读 · 0 评论 -
OC基础
1. @synthesize *用在@implementation中 *用来自动生成setter和getter方法的实现 *用@synthesize age = _age;就可以代替- (int)age{ return _age;}- (void)setAge:(int)age{ _age = age;}2. @synthesize的细节原创 2015-11-20 18:21:47 · 345 阅读 · 0 评论 -
Quartz2D基础~饼状图
代码://// ZQDraw.m// //// Created by QiZhang on 11/26/15.////#import "ZQDraw.h"#import "UIColor+Random.h"#define kWidth 30#define kMargin kWidth@implementation ZQDraw- (void)touchesBegan:(NSS转载 2015-11-26 18:38:38 · 506 阅读 · 0 评论 -
IOS中的触摸事件
1. ios中的事件概述 在ios中会有各种各样的事件,它们可以分为3类:触摸事件、加速计事件、远程控制事件。2. 响应者对象 在iOS中不是任何对象都能处理事件,只有继承了UIResponder的对象才能接收并处理事件。我们称之为“响应者对象”,UIApplication、UIViewController、UIView都继承自UIResponder,因此它们都是响应者对象,都能够转载 2015-12-10 17:31:09 · 534 阅读 · 0 评论 -
Concurrency之Block的定义和Block中对象变量的访问
一、Block的定义// 利用block做两个数个数相减 (有返回值,有两个参数)NSInteger (^subtract)(NSInteger,NSInteger) = ^(NSInteger paramValue,NSInteger paramFrom){ return paramFrom - paramValue;};// 将数字转化成字符串 (有返回值,有一个参数)NSStri翻译 2016-01-15 15:06:50 · 375 阅读 · 0 评论 -
屏幕适配之-Autoresizing
1.对autoresizing的简单介绍autoresizing是对组件进行定位的一种技术。它不能和autolayout进行同时使用。并且在使用autoresizing的时候,只能控制父子视图之间的关系。2.具体用法第一种是在IB中,在Size inspector中进行设置;第二种方式是用代码的方法。下面是利用代码方法的例子:#import "ViewController.h"@interface转载 2016-03-02 18:25:22 · 383 阅读 · 0 评论 -
Security
一、介绍数据安全是苹果系统的核心。你可以利用ios里面的安全函数存储收据到或者文件到不同的存储空间中去。 Apple利用钥匙串去访问操作系统中的数据。钥匙串访问是建立在Common Data Security Architecture(公共数据安全体系简称CDSA)之上的。钥匙串访问可以管理不同的钥匙串,每一个钥匙串本身可以包含安全的数据,包括密码等。 而mac上的钥匙串和ios上的钥匙串有一些翻译 2016-01-25 18:17:06 · 775 阅读 · 0 评论 -
利用CocoaPods管理第三方库
1. 安装CocoaPods代码复用是提高工程开发效率的重要方法,使用第三方库就是一种普遍的方式。在 iOS 开发中使用最广泛的管理第三方库的方案就是使用 CocoaPods。1)安装 Ruby 环境。CocoaPods 是使用 Ruby 实现的,可以通过 gem 命令来安装,Mac OS X 中一般自带 Ruby 环境。接下来将默认的 RubyGems 替换为淘宝的 RubyGems 镜像,速度要转载 2016-08-10 17:11:12 · 505 阅读 · 0 评论 -
静态库和动态库
1.库: 库是程序代码的集合,是共享代码的一种方式。根据源代码的公开情况,可以分为开源库和闭源库。闭源库主要分为静态库和动态库。2.静态库和动态库静态库:.a和.framework形式动态库:.dylib和.framework形式区别:链接时,静态库会被完整的复制到可执行文件中,如果被多次使用,则就拷贝多次;动态库在链接时不复制,程序运行时由系统动态加载到内存供程序调用,系统只加载翻译 2015-12-01 23:34:00 · 469 阅读 · 0 评论 -
AVFoundation的介绍
一、简述AVFoundation是一个OC媒体数据的高级框架。AVFoundation的构建考虑到了目前的硬件环境和应用程序,其设计过程高度依赖多线程机制。充分利用了多核硬件的优势并大量使用block和GCD机制,将复杂的计算机进程放到了后台线程运行。会自动提供硬件加速操作,确保在大部分设备上应用程序能以最佳性能运行。该框架就是针对64位处理器设计的,可以发挥64位处理器的所有优势。二翻译 2016-06-22 10:40:31 · 3166 阅读 · 0 评论 -
理解和分析ios应用的Crash Log
常见的错误类型1).Bad Memory Accress[EXC_BAD_ACCESS // SIGSEGV // SIGBUS] 应用访问了非法内存。Exception Sub-code列出了被访问的资源的坏的内存地址。可以通过Instruments中的Zombies(僵尸对象分析器)来更好地分析此种错误。2).Abnormal Exit[EXC_CRASH // SIGABRT]翻译 2016-05-31 18:44:39 · 1921 阅读 · 0 评论 -
真机调试总体概述
一、对苹果开发者中心的证书的说明真机调试的步骤: 1.注册成为苹果开发者(99$) 2.登陆苹果开发者主页 https://developer.apple.com/membercenter/index.action 3.点击 Certificates, Identifiers & Profiles4.点击Certificates 点击左上角的加号 选择iOS A转载 2016-05-25 16:54:12 · 424 阅读 · 0 评论 -
AVPlayer进行视频播放
一、说明AVPlayer是AVFoundation框架中的一个类,它比较接近于底层,可以利用该类进行自定义样式的视频播放。AVPlayer本身并不能显示视频,如果AVPlayer要显示视频,则它必须要创建一个播放器层AVPlayerLayer来用于展示视频,播放器层继承了CALayer,我们只需要把AVPlayerLayer添加到控制器view的layer中即可。我们在了解AVPlayer之前,首先原创 2016-03-15 10:00:37 · 49250 阅读 · 0 评论 -
APP Run In Background(App 的后台运行)
一、 Background Execution(后台运行)当用户当前不使用你的app时,app此时就处于后台状态。对于大多数app来说,后台状态只是app到挂起状态的一个暂时状态,即它是一个过渡状态。让app处在挂起状态能节约手机电池的电量,也能让让出更多地系统资源给当前正在被使用的app.大多数的app可以很轻松的到挂起状态,但是也有一些特殊需求的app需要在后台持续运行。比如计步助手、音频播放a翻译 2016-03-31 15:50:12 · 7413 阅读 · 0 评论 -
利用MediaPlayer框架进行视频播放
一、概述:在苹果中进行多媒体的播放有两种技术,一种是利用MediaPlayer框架进行播放;另外一种是利用AVFoundation进行播放。利用前者可以快速集成视频播放,而后者可以更深层次的处理视频播放。在这里我们先介绍一下MediaPlayer框架的使用。二、对MediaPlayer的介绍利用MediaPlayer进行视频播放又有两种方式,第一种是利用MPMoviePlayerControlle原创 2015-11-25 15:39:00 · 910 阅读 · 0 评论 -
通过storyboard创建控制器
一、通过storyboard创建具体步骤: 1.先加载storbord文件UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Main" bundle:nil];2.初始化storyboard中的控制器 初始化箭头所指的控制器UIViewController *vc = [storyboard instantiate转载 2016-03-09 10:38:28 · 2126 阅读 · 0 评论 -
UIApplication的解释及应用
一、UIApplication的介绍UIApplication是一个单例的类。一个程序中只有一个UIApplication对象。所以在程序中我们不可以自己创建UIApplication对象。我们利用UIApplication对象主要是设置一些全局信息。二、UIApplication的作用我们使用UIApplication对象,可以做应用级别的操作。比如: 1.设置应用图标右上方的提示数字,图标需要转载 2016-03-09 10:06:56 · 403 阅读 · 0 评论 -
iOS-触摸事件
ios中的事件概述 在ios中会有各种各样的事件,它们可以分为3类:触摸事件、加速计事件、远程控制事件。响应者对象 在iOS中不是任何对象都能处理事件,只有继承了UIResponder的对象才能接收并处理事件。我们称之为“响应者对象”, UIApplication、UIViewController、UIView都继承自UIResponder,因此它们都是响应者对象,都能够接收并处理事件。对转载 2016-03-07 14:29:54 · 374 阅读 · 0 评论 -
IOS中的多线程
一、操作系统中的几个基本概念进程(process):指一个正在运行的可执行程序(应用程序),它可以包含多个线程。 线程(thread):指独立执行的代码片段,最小的执行单位。一个进程中所有的任务都在线程中执行。 任务(task):表示需要执行的工作。它是一个抽象的概念。线程的三种状态:运行(running)、就绪(ready)、阻塞(blocked)。线程持续在这三个状态之间切换,直到它最终退出原创 2016-03-15 14:08:29 · 485 阅读 · 0 评论 -
沙盒目录操作注意
一、函数的使用注意调用 - (BOOL)fileExistsAtPath:(NSString *)path isDirectory:(BOOL *)isDirectory;作用:1.判断一个文件是否存在 2.判断一个文件是否是目录以下是几种情况下的运行结果:1.path路径是一个目录并且存在: 函数返回值:YES isDirectory:无论其初始值是多少,始终返回YES2.p原创 2016-03-18 10:06:31 · 611 阅读 · 0 评论 -
版本管理之-git的简单使用
一.git的基本使用1.git命令帮助================================================================================$ git --help 查看git总帮助命令$ git branch --help 查看branch命令的详细帮助页面# 退出帮助信息,按“q”# 向下翻页,按“空原创 2015-08-06 16:07:13 · 558 阅读 · 0 评论 -
IOS手势识别
1.响应者链的事件传递过程(1)如果view的控制器存在,就传递给控制器;如果控制器不存在,则将其传递给它的父视图。(2)在视图层次结构的最顶级视图,如果也不能处理收到的事件或消息,则其将事件或消息传递给window对象进行处理。(3)如果window对象也不处理,则其将事件或消息传递给UIApplication对象。(4)如果UIApplication也不能处理该事件或消息,则将其丢弃。2转载 2015-12-10 17:41:33 · 749 阅读 · 0 评论 -
IOS的生命周期及应用的前后台切换
一、综述1.app的几个状态 * 停止运行(Not running):应用程序已经终止或者还没有启动。 * 不活动(Inactive):应用程序处在前台,但是不再接收事件(eg:用户锁住了设备)。 * 活动(Active):app处在使用之中。 * 后台(Background):app不在屏幕上显示,但是它仍然在执行代码。大多数程序进入这个状态后会在这个状态 上停留一会。时间转载 2015-11-24 18:43:42 · 499 阅读 · 0 评论 -
24>数据安全
MD5数据加密 1)网络数据加密 现在的md5已经不是绝对的安全,所以通常需要我们对md5进行加密,以增加解密的难度。 a. 加盐(salt):在明文的固定位置插入随机串,然后再进行md5加密。 b. 先加密,后乱序:先对明文进行md5,然后对加密得到的MD5串进行乱序。这种做法较好。 2)本地存储加密 加密对象:重要的数据,比如游戏数据。 检测网络的状态。 苹果官方提供了一个叫R转载 2015-05-18 16:43:57 · 562 阅读 · 0 评论 -
23>IOS网络——————之网络基础
1. 对URL的认识:URL的全称是Uniform Resource Locator ( 统一资源定位符 )。URL的基本格式=协议:// 主机地址 // 路径。 不同的协议,代表不同的资源查找方式,资源传输方式。2. http协议的特点即好处:因为http协议简单,所以http服务器的程序g转载 2015-05-16 23:28:57 · 486 阅读 · 0 评论 -
26>AFN和ASI的区别
一、底层实现1> AFN的底层基于OC的NSURLConnection和NSURLSession2> ASI的底层基于纯C语言的CFNetwork框架3> ASI的运行性能 高于 AFN二、对服务器返回的数据处理1> ASI没有直接提供对服务器数据处理的方式,直接返回data\string2> AFN提供了多种对服务器数据处理的方式* JSON处理* XML处理* 其他处理三、监听请转载 2015-05-21 23:16:45 · 511 阅读 · 0 评论 -
26>ASI文件下载和上传
1.文件下载,支持断点续传#import "ViewController.h"#import "ASIHTTPRequest.h"@interface ViewController ()@property (strong, nonatomic) IBOutlet UIView *progressView;@property (nonatomic,assign) BOOL downloadin转载 2015-05-21 23:09:49 · 608 阅读 · 0 评论 -
24>文件上传分析
一、文件上传的步骤1.设置请求头* 目的:告诉服务器请求体里面的内容并非普通的参数,而是包含了文件参数[request setValue:@"multipart/form-data; boundary=heima" forHTTPHeaderField:@"Content-Type"];2.设置请求体* 作用:存放参数(文件参数和非文件参数)1> 非文件参数[body appendDat转载 2015-05-21 23:21:06 · 580 阅读 · 0 评论 -
25>AFN使用总结
一、2大管理对象1.AFHTTPRequestOperationManager* 对NSURLConnection的封装2.AFHTTPSessionManager* 对NSURLSession的封装二、AFHTTPRequestOperationManager的具体使用1.创建管理者AFHTTPRequestOperationManager *mgr = [AFHTTPRequestOp转载 2015-05-21 23:13:31 · 439 阅读 · 0 评论 -
26>ASI使用总结
一、发送请求的2个对象1.发送GET请求:ASIHttpRequest2.发送POST请求:ASIFormDataRequest* 设置参数// 同一个key只对应1个参数值,适用于普通“单值参数”- (void)setPostValue:(id <NSObject>)value forKey:(NSString *)key// 同一个key(同一个参数名),会对应多个参数值,适用于“多值转载 2015-05-21 23:16:07 · 680 阅读 · 0 评论 -
26>ASI发送post请求
#import "ViewController.h"#import "ASIFormDataRequest.h"@interface ViewController ()@end@implementation ViewController- (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup aft转载 2015-05-21 17:37:21 · 441 阅读 · 0 评论