iOS
刘海阳
这个作者很懒,什么都没留下…
展开
-
iOS--内存分析工具
1.静态分析Analyze:不用运行程序都能分析。2.动态分析Profile: 1.内存泄漏leaks: 2.查看当前的内存分配情况Allcations:原创 2016-08-29 11:32:18 · 497 阅读 · 0 评论 -
iOS--响应者链条
响应者链条是用来把事件往上抛1.把事件回传回去#import "RedView.h"@implementation RedView- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{ NSLog(@"RedView-----touchesBegan"); [super touchesBegan:touc原创 2016-09-02 18:05:17 · 297 阅读 · 1 评论 -
iOS--手势识别UIGestureRecognizer
1.能用手势识别就用,不要用touch…。2.UIGestureRecognizer是一个抽象类,定义了所有手势的基本行为没使用它的自雷才能处理具体的手势。 1.UITapGestureRecongnnizer(敲击) 2.UIPinchGestureRecognizer(捏合,用于缩放) 3.UIPanGestureRecognizer(拖拽) 4.UISwipeGestureRecogn原创 2016-09-05 11:31:04 · 322 阅读 · 1 评论 -
iOS--多线程-01
1.进程是指在系统中正在独立运行的一个应用程序(只分配内存)。2.一个线程中任务的执行方式是串行的,同一时间内,一个线程只能执行一个任务。3.多线程可以提高程序的执行效率。4.同一时间CPU只能处理一条线程,多线程并发只是CPU快速的在多条县城之间的调度。5,如果线程非常多。 1.CPU会累死的。 2.每条线程被调度执行的频次会降低。6.优点。 1.能适当提高资源利用率(CPU,内存利用率)原创 2016-09-05 14:41:34 · 261 阅读 · 0 评论 -
iOS--多线程NSThread--02
1.#import "HMViewController.h"#import <pthread.h>@interface HMViewController ()@end@implementation HMViewControllervoid *run(void *data){ for (int i = 0; i<10000; i++) { NSLog(@"touchesBe原创 2016-09-05 16:23:26 · 271 阅读 · 0 评论 -
iOS--线程安全03
1.互斥锁@synchronized(锁对象){ }(耗内存)。 1.多条线程抢夺同一资源时需要加锁。 2.线程同步:多条线程在同一条线上执行。#import "HMViewController.h"@interface HMViewController ()@property (nonatomic, strong) NSThread *thread1;@property (nonatom原创 2016-09-05 17:08:58 · 228 阅读 · 1 评论 -
iOS--线程间通讯NSThread--04
1.回到主线程,刷新UI界面(为了线程安全)#import "HMViewController.h"@interface HMViewController ()@property (weak, nonatomic) IBOutlet UIImageView *imageView;@end@implementation HMViewController- (void)viewDidLoad{原创 2016-09-05 17:29:38 · 303 阅读 · 1 评论 -
iOS--多线程GCD--05
1.牛逼的中枢调度器,纯C语言。2.优势。 1.为多核运算提供的解决方案,他可以自动利用CPU的内核。 2.会自动管理线程的生命周期,创建线程,调度任务,销毁线程。3.任务:执行什么操作。4.队列:用来存放任务。5.GCD使用的两个步骤。 1.定制任务 2.将任务添加到队列中。 1.GCD会自动将队列中的任务取出,放到对应的线程中执行。 2.任务的取出遵循队列原则。6.执行任务。 7.原创 2016-09-05 18:00:11 · 336 阅读 · 1 评论 -
iOS--lldb常用命令总结
expr expr 表达式 可以在调试时动态执行指定表达式,并将结果打印出来,很有用的命令。po po 表达式 与expr类似,打印对象,会调用对象description方法。是print-object的简写print print (type) 表达式 也是打印命令,需要指定类型。bt bt [all] 打印调用堆栈,是thread backtrace的简写,加al原创 2016-08-26 14:53:23 · 558 阅读 · 0 评论 -
iOS--多线程GCD线程间通信--07
1.// 需要设置按钮的image和backgroundImage,建议先把按钮类型改为custom,才能保证设置成功// 属性名不能以new开头// 只有在init开头的构造方法中,才允许对self进行赋值#define HMGlobalQueue dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0)#define HMM原创 2016-09-06 11:15:20 · 840 阅读 · 0 评论 -
iOS--xib的加载问题
1.向拖拽的对象上加手势的问题。return的时候容易出现问题,因为手势也是一个对象,注意顺序。+ (instancetype)toolbar{ NSArray *objs = [[NSBundle mainBundle] loadNibNamed:@"HMToolbar" owner:nil options:nil]; return [objs lastObject];}原创 2016-09-06 16:38:51 · 241 阅读 · 0 评论 -
iOS--多线程GCD延迟执行--07
1.#import "HMViewController.h"@interface HMViewController ()@end@implementation HMViewController- (void)viewDidLoad{ [super viewDidLoad]; // Do any additional setup after loading the view, typ原创 2016-09-06 17:06:25 · 342 阅读 · 1 评论 -
iOS--多线程GCD队列组--08
1.可以设置多个线程执行完后,需要执行的任务。#import "HMViewController.h"// 1.分别下载2张图片:大图片、LOGO// 2.合并2张图片// 3.显示到一个imageView身上@interface HMViewController ()@property (weak, nonatomic) IBOutlet UIImageView *imageView;@p原创 2016-09-07 15:05:56 · 408 阅读 · 0 评论 -
iOS--单例模式
/** static : 修饰变量 1> 修饰全局变量 * 全局变量的作用域仅限于当前文件内部2> 修饰局部变量 : * 局部变量的生命周期 跟 全局变量 类似 * 但是不能改变作用域 * 能保证局部变量永远只初始化1次,在程序运行过程中,永远只有1分内存 */1.ARC#import "HMMusicTool.h"@implementation HMMusicTool原创 2016-09-08 10:22:53 · 268 阅读 · 0 评论 -
iOS--触摸事件的传递
1.发生触摸事件后,系统会将该事件加入到一个由UIApplication管理的事件队列(先进先出,栈:先进后出)中(所以是从父view传递到子view)。 2.UIApplication会从事件队列中取出最前面的事件,并将事件分发下去以便处理,通常,先发送事件给应用程序的主窗口(kewindow) 3.主窗口会在视图层次结构中找到最合适的视图来处理触摸事件,这也是整个事件过程的第一步。1.触摸事原创 2016-09-02 16:54:04 · 576 阅读 · 1 评论 -
iOS--NSURLSession下载大文件
1.NSURLSession:iOS7之后出来的,目的是替代NSURLConnection#import "HMViewController.h"@interface HMViewController () <NSURLSessionDownloadDelegate>@end@implementation HMViewController- (void)viewDidLoad{ [supe原创 2016-09-02 15:55:27 · 716 阅读 · 1 评论 -
iOS--block底层代码探究
1.__block:2.__weak:1.首先创建个blockint main(int argc, char * argv[]) { @autoreleasepool { __block int a = 10; void (^block)() = ^{ a = 20; }; NSLog(@"%d", a);原创 2016-08-29 15:47:40 · 457 阅读 · 0 评论 -
iOS--本地通知
1.本地通知在程序在前台状态不会发出。2.// 只要程序在退出后台的状态下启动就会调用didFinishLaunchingWithOptions,我们可以根据launchOptions里面的数据来判断用户是根据通知来打开程序还是点击icon来点击程序的。- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOp原创 2016-08-30 10:31:24 · 442 阅读 · 1 评论 -
iOS--RunTime运行时
1.给分类增添成员变量#import "ViewController.h"#import <objc/message.h>@implementation ViewController(UIButton)static double HeightKey;- (void)setHeight:(double)height { objc_setAssociatedObject(self, &Hei原创 2016-08-29 16:30:01 · 342 阅读 · 0 评论 -
iOS--ipv6终极解决方案
1.将三方库升级到支持v6的最新版本2.域名访问3.检查v4的相关代码4.v6环境测试5.cname解析原创 2016-08-30 10:35:35 · 739 阅读 · 2 评论 -
iOS--APP 迭代开发版本号的规则
在iOS中简单的版本号是怎样管理的呢? 首先我们的App第一版本首次上线, 比如以1.0.0为首次上线的版本号:1.上线后突然发现一个严重的Bug那我们就要修复更新版本, 此时我们的版本号为1.0.1 所以说如果修复Bug或者优化功能, 我们只修改叠加第三位数字, 其他不变2.如果有了新的需求, 在原来的基础上增加了一个新功能, 那么我们的版本号变为1.1.0, 需要清空第三位数字为0, 来叠加修原创 2016-08-30 10:47:55 · 2845 阅读 · 0 评论 -
iOS--造成dealloc不调用的原因
1.ViewController中存在NSTimer[NSTimer scheduledTimerWithTimeInterval:1.0 target:self selector:@selector(updateTime:)原创 2016-08-30 11:31:48 · 477 阅读 · 0 评论 -
【react-native-0.31-iOS】添加热更新功能-iOS(04)
1.将官网上的教程跑了一遍,发现没毛病,这里就不一一赘述了。 https://github.com/reactnativecn/react-native-pushy/blob/master/docs/guide3.md2.下面总结下checkUpdate失败的几个可能原因: 1、iOS没有允许HTTP请求或安卓没有允许网络访问权限 2、appId不正确 3、测试设备本身网络不好原创 2016-08-30 18:32:38 · 529 阅读 · 0 评论 -
iOS--js和oc交互
1.从iOS7开始 苹果公布了JavaScriptCore.framework 它使得JS与OC的交互更加方便了。2.oc调用js-(void)webViewDidFinishLoad:(UIWebView *)webView { //首先创建JSContext 对象(此处通过当前webView的键获取到jscontext) JSContext *contex原创 2016-08-31 14:51:38 · 496 阅读 · 0 评论 -
iOS--jsPath热更新
http://www.jianshu.com/p/4e332dbec1e5原创 2016-08-30 11:32:52 · 836 阅读 · 0 评论 -
iOS--UIWebView清除缓存和Cookie
1.清除缓存和cookie- (void)cleanCacheAndCookie{ //清除cookies NSHTTPCookie *cookie; NSHTTPCookieStorage *storage = [NSHTTPCookieStorage sharedHTTPCookieStorage]; for (cookie in [storage原创 2016-08-31 16:35:37 · 2777 阅读 · 0 评论 -
iOS--使用GCD实现单例模式
copyWithZone的前提是对象已经纯在。 1.ARC#import "HMDataTool.h"@implementation HMDataTool// 用来保存唯一的单例对象static id _instace;+ (id)allocWithZone:(struct _NSZone *)zone{ static dispatch_once_t onceToken; d原创 2016-09-12 10:57:44 · 1024 阅读 · 0 评论 -
iOS--文件下载
1.小文件下载 1.NSData dataWithContentOfUrl(在主线程中,需要开辟线程) 2.NSURLConnection2.大文件下载 1.响应头里面会获得文件的总大小和类型(response)。 2.如果想要永久保存某些数据,需要存储在Library的cache中;Document如果太大的话,审核时会被拒绝,会备份;tmp在程序退出时会删除。#import "HMVie原创 2016-09-02 13:51:56 · 454 阅读 · 0 评论 -
iOS--大文件断点下载
1.只有NSMUtableURLRequest才能去改请求头,关键在于去设置请求头。#import "HMViewController.h"#import "DACircularProgressView.h"@interface HMViewController () <NSURLConnectionDataDelegate>- (IBAction)download:(UIButton *)se原创 2016-09-02 14:34:32 · 382 阅读 · 1 评论 -
iOS--多线程GCD队列--06
1.队列的类型1.并发队列: 1.可以多个任务并发执行,自动开启多个线程执行任务。 2.并发只在异步(dispatch_async)下有效。1.串行队列:一个接一个执行。2.GCD中创建串行方式 1.dispatch_queue_create函数 2.使用主队列3.各种队列的执行效果4. //// HMViewController.m// 08-GCD02-队列的使用(了解)//原创 2016-09-06 10:21:33 · 603 阅读 · 0 评论