自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

天方夜歌的博客

记录代码优化的点滴

  • 博客(34)
  • 资源 (8)
  • 问答 (1)
  • 收藏
  • 关注

转载 iOS安全系列之 HTTPS

转载:http://www.cocoachina.com/ios/20150810/12947.html如何打造一个安全的App?这是每一个移动开发者必须面对的问题。在移动App开发领域,开发工程师对于安全方面的考虑普遍比较欠缺,而由于iOS平台的封闭性,遭遇到的安全问题相比于Android来说要少得多,这就导致了许多iOS开发人员对于安全性方面没有太多的深入,但对于一个合格的软件开发者来

2017-07-31 16:54:12 1004

转载 OC温故:面向对象的三大特性(封装,继承,多态)

转自:http://www.cocoachina.com/ios/20141211/10609.html我们都知道,面向对象程序设计中的类有三大特性:继承,封装,多态,这个也是介绍类的时候,必须提到的话题,那么今天就来看一下OC中类的三大特性:一、封装封装就是对类中的一些字段,方法进行保护,不被外界所访问到,有一种权限的控制功能,Java中有四种访问权限修饰符:public,default,prot

2017-07-28 14:43:48 338

原创 浅谈Block--简单易懂

iOS代码块Block概述代码块Block是苹果在iOS4开始引入的对C语言的扩展,用来实现匿名函数的特性,Block是一种特殊的数据类型,其可以正常定义变量、作为参数、作为返回值,特殊地,Block还可以保存一段代码,在需要的时候调用,目前Block已经广泛应用于iOS开发中,常用于GCD、动画、排序及各类回调注: Block的声明与赋值只是保存了一段代码段,必须调用才能执行内部代码Block变量

2017-07-28 14:11:56 374

转载 避免Block的循环引用

什么是循环引用,什么时候发生循环引用1 循环引用就是当self 拥有一个block的时候,在block 又调用self的方法。形成你中有我,我中有你,谁都无法将谁释放的困局。 self.myBlock = ^{ [self doSomething]; }; +-----------+ +-----------+ | self

2017-07-24 14:46:18 321

转载 weak和assign的区别-正确使用weak、assign

一、区别1.修饰变量类型的区别weak 只可以修饰对象。如果修饰基本数据类型,编译器会报错-“Property with ‘weak’ attribute must be of object type”。assign 可修饰对象,和基本数据类型。当需要修饰对象类型时,MRC时代使用unsafe_unretained。当然,unsafe_unretained也可能产生野指针,所以它名字是

2017-07-24 10:15:37 2404

转载 堆栈与队列的区别

队列只能在队头做删除操作,在队尾做插入操作.而栈只能在栈顶做插入和删除操作栈就是一个桶,后放进去的先拿出来,它下面本来有的东西要等它出来之后才能出来堆是在程序运行时,而不是在程序编译时,申请某个大小的内存空间。即动态分配内存,对其访问和对一般内存的访问没有区别。{堆是指程序运行是申请的动态内存,而栈只是指一种使用堆的方法(即先进后出)。}栈是先进后出的,但是于堆而言却没有这个特

2017-07-24 09:36:32 1075

原创 浅谈MVVM框架

一、MVC简介 MVC是Model-View-Controler的简称             Model——即模型。模型一般都有很好的可复用性,统一管理一些我们需要使用的数据。      View——就是存放视图使用的。      Controller——控制器它负责处理View和Model的事件。MVVM简介     MVC框架一目了然,也非常好理解

2017-07-21 16:23:00 30535 1

原创 推荐一款好用解压RAR、ZIP文件Mac软件,可以输入密码Dr. Unarchiver

推荐一款好用解压RAR、ZIP文件Mac软件,可以输入密码Dr. Unarchiver。   今天工作中Windows发给我一个加密RAR文件,是公司很重要的文件,可是Mac不支持呀,因此我把App Store上支持解压RAR的免费软件都下载下来,一个一个的试用,发现我还是比较喜欢Dr. Unarchiver文件,有的还不支持密码解压比如iZip Unarchiver等。

2017-07-20 16:25:29 7529 2

原创 AppIcon各种图片的生成使用Prepo工具快速便捷

AppIcon只需要一张1024*1024的图就可以了,具体的icon可以用Prepo工具生成。软件:使用方法:OK了,简单吧!!!!!!

2017-07-20 16:07:15 1738

原创 除NStimer之外GCD倒计时写法

先了解一些基本知识第一:     Dispatch Source的几种种类:     1、DISPATCH_SOURCE_TYPE_DATA_ADD变量增加     2、DISPATCH_SOURCE_TYPE_DATA_OR变量OR     3、DISPATCH_SOURCE_TYPE_MACH_SEND MACH端口发送     4、DISPATCH_SOU

2017-07-20 14:35:23 446

转载 iOS多线程--彻底学会多线程之GCD

转自:http://www.jianshu.com/p/2d57c72016c61. GCD简介什么是GCD呢?我们先来看看百度百科的解释简单了解下概念引自百度百科Grand Central Dispatch (GCD) 是Apple开发的一个多核编程的较新的解决方法。它主要用于优化应用程序以支持多核处理器以及其他对称多处理系统。它是一个在线程池模式的基础上执行的并行任务。在M

2017-07-20 11:52:10 397

原创 Apps using background location services must provide a reason that clarifies the purpose of the use

上架App Store被拒原因: Apps using background location services must provide a reason that clarifies the purpose of the use, using mechanisms described in the Human Interface Guidelines DetailsYour

2017-07-19 09:29:45 477

转载 Objective-C 中nil Nil NULL NSNull 之间的区别

转载:http://blog.csdn.net/wxs0124/article/details/50538189nil 是对一个Objective-C对象赋空值的标签 指向一个对象的指针为空 在objc.h中的定义如下所示:#ifndef nil# if __has_feature(cxx_nullptr)# define nil nullptr# else# defi

2017-07-17 13:59:21 448

原创 Xcode8权限问题

iOS10系统下调用系统相册、相机功能会遇到闪退的情况。调用系统相册报错描述如下:This app has crashed because it attempted to access privacy-sensitive data without a usage description.The app's Info.plist must contain an NSPhotoLibr

2017-07-14 17:19:37 536

转载 UIResponder

1:首先查看一下关于UIResponder的定义NS_CLASS_AVAILABLE_IOS(2_0) @interface UIResponder : NSObject//响应链中负责传递事件的方法- (nullable UIResponder*)nextResponder;//一个响应对象成为第一响应者的一个前提是它可以成为第一响应者,可以用这个进行判断,默认值为NO-

2017-07-14 15:17:50 478

原创 UIBUtton图片和文字的位置关系封装

在开发过程中我们经常遇到UIBUtton图片和文字的位置关系问题,有四种情况:  1  image在上,label在下 2 image在左,label在右  3 image在下,label在上 4 image在右,label在左 下面我对UIBUtton的Category做了简单的封装,简化代码:.h文件#import

2017-07-14 10:08:11 890

转载 深入理解Objective-C:Category

摘要无论一个类设计的多么完美,在未来的需求演进中,都有可能会碰到一些无法预测的情况。那怎么扩展已有的类呢?一般而言,继承和组合是不错的选择。但是在Objective-C 2.0中,又提供了category这个语言特性,可以动态地为已有类添加新行为。如今category已经遍布于Objective-C代码的各个角落,从Apple官方的framework到各个开源框架,从功能繁复的大型APP到

2017-07-13 11:23:36 306

原创 iOS远程推送和本地推送

在植入环信SDK时才知道环信的EaseUI里只写了远程推送,也就是我们只有杀死应用App的时候才能收到通知,本地推送需要我们自己写,因此我研究了一下远程推送和本地推送        网上那么多的学习资料,我就不班门弄斧了,推荐一个学习推送的教程     http://www.jb51.net/Special/888.htm

2017-07-13 10:14:20 247

转载 removeFromSuperviews删除

使用removeFromSuperview的时候发现他的实质并不是将这个视图从内存中移除。而且将一个视图从他的父视图上删除。    大家需要了解计算机删除的本质,标记删除,当你删除一个东西的时候,系统只是将这块内存做了一个标记,表示目前无人使用,但是之前视图的内存地址存在。    所以如果想让视图不存在,需要在移除之后置为nil。转自 http://blog.csdn.net/

2017-07-12 16:03:17 699

原创 sortedArrayUsingComparator数组排序

先讲解一点小知识:适用于数字,字母排序NSOrderedAscending的意思是:左边的操作对象小于右边的对象。NSOrderedDescending的意思是:左边的操作对象大于右边的对象。 NSArray *array = [NSArrayarrayWithObjects:@"password",@"usernam

2017-07-12 15:15:27 2278

原创 NSUserDefaults的写法问题

我们在写本地化NSUserDefaults时,最好分开写先:NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];再:NSString *keys = [defaults  objectForKey@"username"];减少获取时间,提高用户体验。

2017-07-12 10:18:56 321

转载 解决UIImage在压缩时失真问题,压缩图片的大小

这个问题解决了一大段时间,甚是头痛! 1.(错误的方法)之前以及网上很多资料都是使用这种方法来压缩图片:/** * 压缩图片 * image:将要压缩的图片 size:压缩后的尺寸 */-(UIImage*) OriginImage:(UIImage *)image scaleToSize:(CGSize)size{ UIGraphicsBeginImageCon

2017-07-12 10:07:16 1982

转载 分享Xcode使用技巧(兼容iOS10、iPhone刷机固件、Xcode各版本、内存泄漏检测)

一、兼容iOS10:http://mp.weixin.qq.com/s?__biz=MjM5OTM0MzIwMQ==&mid=2652547529&idx=1&sn=bdbca712415cc6cc68e4f04c855e8441&scene=2&srcid=0917PwgzUGOFzANxvpPYvN6v&from=timeline&isappinstalled=0#wechat_redirec

2017-07-12 10:00:05 708

原创 开发中区分开发环境和生产环境

我们历经千辛万苦把一个应用App写好了,可是我们在上架的时候总会遗留这样那样的问题,导致上架之后出现各种问题,检查之下发现有很多问题是我们忘记区分开发环境和生产环境。上架的时候有的忘记修改造成的,针对这样的问题我们找一个一劳永逸的方法解决它。     在.h文件里自动生成的那部分代码是防止重复编译  在开发中我们一般用到的需要区分开发环境和生产环境的地方有  第

2017-07-12 09:49:24 2712

原创 UITableView刷新某一部分或某一行

刷新某一部分或某一行//一个section刷新NSIndexSet *indexSet=[[NSIndexSet alloc]initWithIndex:2];[tableview reloadSections:indexSet withRowAnimation:UITableViewRowAnimationAutomatic];//一个cell刷新NSIn

2017-07-11 10:41:59 874

原创 UITableView取出某一行

取出某一行/* 取出某一行 */NSIndexPath *indexPath = [NSIndexPath indexPathForRow:0inSection:0];ColorCell *vd =(ColorCell *)[self.colorTableView  cellForRowAtIndexPath:indexPath];

2017-07-11 10:40:40 3007

转载 消息处理之performSelector

performSelector和直接调用方法的区别performSelector: withObject:是在iOS中的一种方法调用方式。他可以向一个对象传递任何消息,而不需要在编译的时候声明这些方法。所以这也是runtime的一种应用方式。所以performSelector和直接调用方法的区别就在与runtime。直接调用编译是会自动校验。如果方法不存在,那么直接调用 在编译

2017-07-11 10:38:27 364

转载 iOS 数据存储的常用方式

一、iOS应用数据存储的常用方式1、XML属性列表(plist)归档 2、Preference(偏好设置)3、NSKeyedArchiver归档(NSCoding) // 所谓归档,是一个过程,即用某种格式来保存一个或者多个对象,以便以后还原这些对象4、SQLite3 5、Core Data二、数据存储1、 pist文件读与写特点:只能存储OC常用数据类型(

2017-07-10 13:42:13 394

原创 iOS的沙盒路径

定义:iOS应用程序只能对自己创建的文件系统读取文件,这个“独立”“封闭”“安全”的空间,我们称为沙盒。注意:每个应用程序都有自己的独立的存储空间(沙盒)一般来说应用程序间是不可以相互访问。沙盒路径下的文件:Documents:一般我们需要持久的数据都放在这个目录中,你可以在当中添加子文件夹,尤其需要我们注意的是,iTunes备份和恢复的时候,会包括此目

2017-07-10 09:27:08 425

转载 NSTimer的使用

NSTimer 的头文件/* NSTimer.h Copyright (c) 1994-2015, Apple Inc. All rights reserved.*/#import #import NS_ASSUME_NONNULL_BEGIN@interface NSTimer : NSObject/** 这下面主要是一些构造方法*/// Use t

2017-07-07 15:47:36 1185

原创 原生的二维码 <AVFoundation/AVFoundation.h>

第一步:添加代理AVCaptureMetadataOutputObjectsDelegate>第二步:完整代码;{   NSTimer*timer;}//1.初始化捕捉设备(AVCaptureDevice),类型为AVMediaTypeVideo@property (strong,nonatomic)AVCaptureDevice *captureD

2017-07-07 15:39:59 605

原创 NSDateFormatter优化以及测试方法CFAbsoluteTimeGetCurrent()

过度的创建NSDateFormatter用于NSDate与NSString之间转换,会导致App卡顿,打开Profile工具查一下性能,你会发现这种操作占CPU比例是非常高的。所以我们需要优化一下。在iOS 7之前NSDateFormatter线程是不安全的,在iOS 7之后NSDateFormatter线程是安全的,但是现在iOS 7被舍弃了,所以我们只考虑线程是安全的就可以了。

2017-07-06 10:38:23 957

转载 NSLog效率低下的原因以及NSLog宏定义

我是前言打Log是我们debug时最简单朴素的方法,NSLog对于objc开发就像printf对于c一样重要。但在使用NSLog打印大量Log,尤其是在游戏开发时(如每一帧都打印数据),NSLog会明显的拖慢程序的运行速度(游戏帧速严重下滑)。本文探究了一下NSLog如此之慢的原因,并尝试使用lldb断点调试器替代NSLog进行debug log。小测试测试下分别使

2017-07-05 09:10:30 1569

原创 NSMutableDictionry保存的数据乱,和NSArray结合得出自己想要的数据

NSMutableDictionry保存的数据比如{@"nihao ":@"1",@"no ":@"2",@"yes ":@"3",@"th":@"4",}使用 NSArray *allValue = [temp allValue]; 数据显示:“nihao”,"yes",@"th",@"no" 这样就造成了数据混乱解决方法:NSArray *scArr =   NSArr

2017-07-04 15:57:58 291

WebJascriptController.swift

这是封装的JS交互,Swift5版本,不管是JS调用Swift,还是Swift调用JS里面都包含,直接使用就可以了哦

2020-05-13

SwiftStoreKit.zip

这是最新Swift语言封装的内购,Swift5版本,StoreKit原生,Xcode11.4,可以直接使用 StoreObserver.swift 加入项目中即可

2020-05-12

react-native TabBar和Nav

用react-navigation实现TabBar界面跳转和Nav界面切换,适合初学者,超级简单

2018-04-10

SCHPlayer封装的播放器

封装的播放器,里面包含总时间,当前时间,进度条,快速播放,横屏竖屏流畅切换

2018-03-31

极光推送封装(页面跳转,设置角标,设置别名)

对极光推送做了封装,避免AppDelegate代码臃肿,优化了代码,OC编写,直接导入到程序中就可以了

2018-03-20

讯飞语音Demo

非常简单的语音识别,和Demo不一样,只有无界面语音识别,有界面语音识别。

2017-10-17

Photos从相簿中选择图片

swift4.0最新,包括相簿列表,Photos分级从相簿中选择图片

2017-10-13

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

TA关注的人

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