iOS
文章平均质量分 82
SongChunMin_
互联网行业,只有不断学习,才不会被淘汰。
展开
-
Runtime
当人们初学 Cocoa/Objective-C 时,Objective-C Runtime 是被忽略的特性之一。原因是 Objective-C(这门语言)很容易在几小时内就熟悉,新学 Cocoa 的人花费他们大部分的时间学习 Cocoa 框架和适应它是如何工作的。然而每个人至少应该知道一些 runtime 的工作细节,需要比知道编译器会把 [target doMethodWith:var1];转载 2016-04-12 17:51:01 · 568 阅读 · 0 评论 -
NSURLCache
在IOS应用程序开发中,为了减少与服务端的交互次数,加快用户的响应速度,一般都会在IOS设备中加一个缓存的机制。使用缓存的目的是为了使用的应用程序能更快速的响应用户输入,是程序高效的运行。有时候我们需要将远程web服务器获取的数据缓存起来,减少对同一个url多次请求。下面将介绍如何在IOS设备中进行缓存。 内存缓存我们可以使用sdk中的NSURLCache类。NSURLRe转载 2016-04-12 10:05:14 · 536 阅读 · 0 评论 -
iOS SDWebImage源码研究(四)
1234567891011121314151617181920212223242526272829303132333435转载 2016-04-12 09:36:15 · 855 阅读 · 0 评论 -
iOS 离屏渲染的研究(一)
前言在iOS的世界,圆角无处不在,而且必须存在。因为圆角是符合人类视觉安全体验的,圆角让人觉得舒适,而方角在潜意识层次是具有伤害体验的,因为尖尖的东西总是有可能对人造成伤害的,所以我们更喜欢圆角。在我之前的文章中讲过,在iOS的中设置圆角是非常容易的一件事情,这也体现出苹果也是非常重视圆角这件事情的。圆角虽好,但如果使用不当,它就是你的帧数杀手,特别当它出现在滚动列表的时候。下面来转载 2016-04-11 18:05:14 · 3470 阅读 · 0 评论 -
iOS 离屏渲染的研究(二)
GPU渲染机制:CPU 计算好显示内容提交到 GPU,GPU 渲染完成后将渲染结果放入帧缓冲区,随后视频控制器会按照 VSync 信号逐行读取帧缓冲区的数据,经过可能的数模转换传递给显示器显示。GPU屏幕渲染有以下两种方式:On-Screen Rendering意为当前屏幕渲染,指的是GPU的渲染操作是在当前用于显示的屏幕缓冲区中进行。Off-Screen Re原创 2016-04-11 15:14:17 · 849 阅读 · 0 评论 -
iOS SDWebImage源码研究(三)
在前面的SDWebImage源码解析(一)和SDWebImage源码解析(二)中,解析了开源异步图片下载库SDWebImage的缓存部分。接下来本篇文章将对SDWebImage的下载器部分进行解析。SDWebImage的异步下载器SDWebImageDownload利用它的单例对象sharedDownloader,可以很好的对图片的下载过程进行配置。sharedDownloader可以配置的部原创 2016-04-11 11:37:45 · 1334 阅读 · 0 评论 -
iOS SDWebImage源码研究(二)
1.上一篇说到SDImageCache使用完整的URL来作为磁盘缓存的key。但是有时候为了访问控制的目的,URL的部分内容会是动态的,这样磁盘缓存就起不了作用。对于这个问题,SDWebImageManager给出了一个解决办法(也就是说单独使用SDImageCache是没有的,需要自己修改源码):设置一个cacheKeyFilter,以NSURL作为输入,输出一个NSString作为缓存ke原创 2016-04-10 11:39:47 · 770 阅读 · 0 评论 -
iOS SDWebImage源码研究(一)
源码地址:https://github.com/rs/SDWebImage版本:3.7SDWebImage是一个开源的第三方库,它提供了UIImageView的一个分类,以支持从远程服务器下载并缓存图片的功能。它具有以下功能:提供UIImageView的一个分类,以支持网络图片的加载与缓存管理一个异步的图片加载器一个异步的内存+磁盘图片缓存,并具有自动缓存过期处原创 2016-04-10 11:20:45 · 893 阅读 · 0 评论 -
UIImage的scale
iPhone OS4.0加入了scale factor,这表示point长度/pixel长度。在分辨率为960*640的设备上,我们知道逻辑坐标系还是不变480*320,那么一个point有两个pixel长,所以scale=2.0。在分辨率为480*320的设备商,point和pixel长度相同,scale=1.0。为了程序自动适应分辨率,程序会自动给UIScreen.scal原创 2016-04-09 16:38:21 · 696 阅读 · 0 评论 -
iOS断言NSAssert
断言(assertion)是指在开发期间使用的、让程序在运行时进行自检的代码(通常是一个子程序或宏)。断言为真,则表明程序运行正常,而断言为假,则意味着它已经在代码中发现了意料之外的错误。断言对于大型的复杂程序或可靠性要求极高的程序来说尤其有用。有关断言的详细信息,推荐大家一定去看《代码大全2》中“防御式编程”这一章。下面,摘录一些代码大全中有关断言使用的经典指导性建议:原创 2016-04-09 11:26:31 · 842 阅读 · 0 评论 -
iOS NSCache使用
人开发者来说,这是一笔不小的开销。以上两点造成App Store里面使用特殊中文字库的iOS应用较少。现在通常只有阅读类的应用才会使用特殊中文字库。但其实从iOS6开始,苹果就支持动态下载中文字体到系统中。只是苹果一直没有公开相应的API。最终,相应的API在今年的WWDC大会上公开,接下来就让我们来一起了解这个功能。原创 2016-04-09 10:26:49 · 1906 阅读 · 0 评论 -
iOS的main函数
如同任何基于C的应用程序,程序启动的主入口点为iOS应用程序的main函数。在iOS应用程序,main函数的作用是很少的。它的主要工作是控制UIKit framework。因此,你在Xcode中创建任何新的项目都配备了一个默认的主函数。除了少数特例外,你永远不应该改变这个函数的实现。#import #import "AppDelegate.h" int main(int argc, ch原创 2016-04-08 21:07:35 · 838 阅读 · 0 评论 -
NSString 和NSData 转换
NSString 转换成NSData 对象 NSData* xmlData = [@"testdata" dataUsingEncoding:NSUTF8StringEncoding]; NSData 转换成NSString对象 NSData * data; NSString *result = [[NSString alloc] initWithData:data encodin原创 2016-04-08 10:18:49 · 1135 阅读 · 1 评论 -
iOS原生WebView中JavaScript和OC交互
在iOS开发中很多时候我们会和UIWebView打交道,目前国内的很多应用都采用了UIWebView的混合编程技术,最常见的是微信公众号的内容页面。前段时间在做微信公众平台相关的开发,发现很多应用场景都是利用HTML5和UIWebView来实现的。一、机制Objective-C语言调用JavaScript语言,是通过UIWebView的 - (NSString *)stri原创 2016-04-07 09:35:02 · 3935 阅读 · 1 评论 -
iOS常见的延时执行
iOS常见的延时执行原创 2016-04-03 22:01:55 · 792 阅读 · 0 评论 -
GCD使用
一、GCD是什么。GCD 是 libdispatch 的市场名称,而 libdispatch 作为 Apple 的一个库,为并发代码在多核硬件(跑 iOS 或 OS X )上执行提供有力支持。它具有以下优点:1.GCD 能通过推迟昂贵计算任务并在后台运行它们来改善你的应用的响应性能。2.GCD 提供一个易于使用的并发模型而不仅仅只是锁和线程,以帮助我们避开并发陷阱。3.GCD原创 2016-04-03 19:42:41 · 691 阅读 · 0 评论 -
iOS应用程序内购/内付费(一)
很久之前就想出一篇IOS内付费的教程,但是一查网上的教程实在太多了,有的写得真的蛮不错的,就心想算了,于是就保存在草稿箱了。至于为什么写完它呢!真是说来话长,最近公司有个项目经理跑来问我有关苹果内付费相关的细节,跟他聊了半天,从项目对接苹果官方支付接口聊到了如何查看App收益,最后终于使他有了一些眉目,但是悲催的是还要我继续去跟他们项目的程序员讲解(真是疯了),所以我就决定给他们项目写一个内购的文转载 2016-03-31 09:07:47 · 1085 阅读 · 0 评论 -
iOS支持MP4,AVI,NAVI,DV-AVI,DIVX,MOV,ASF,WMV,RM,RMVB等视频格式。
iOS支持MP4,AVI,NAVI,DV-AVI,DIVX,MOV,ASF,WMV,RM,RMVB等视频格式。原创 2016-03-21 12:03:45 · 3563 阅读 · 0 评论 -
iOS项目结构
主项目中的分层主要包含四个模块,Main(主要)、Expand(扩展)、Resource(资源)、Vender(第三方),还有本项目是有多个Tag,用于区分不同的版本,比如本地环境测试版、产品版,主要是通过Tag来区分,不同的标识对应不同的连接地址;当然也可以设置其它不同的内容;2.1 Main(主要)模块的内容此模块主要目的是为了存放项目的页面内容,比如MVC的内容,Base(基翻译 2016-01-07 23:38:23 · 891 阅读 · 0 评论 -
iOS与JS的交互
http://www.cocoachina.com/ios/20140409/8127.html原创 2016-01-05 10:02:01 · 830 阅读 · 0 评论 -
忘记NSURLConnection,拥抱NSURLSession吧
说到 iOS 7 和 Mac OS X 10.9 Mavericks 的显著变化,其中一个就是Foundation框架中URL加载系统的优化。 此时可能有人正沉浸在Apple的网络基础架构,我想在这里分享一下我对这些新APIs的看法,并展示这些新APIs如何改变我们构建应用程序的方式,以及这些它们在API设计理念演变中的意义。 作为Core Foundation / CFNet转载 2016-04-25 16:35:20 · 681 阅读 · 0 评论 -
DUNS申请
申请DUNS码(邓白氏码)申请地址:https://developer.apple.com/ios/enroll/dunsLookupForm.action申请的资料就是按上面的提示如实填写。Legal Entity Name 这就写公司的英文名,什么,你们公司没有英文名,那也简单,把中文名称用google 翻译一下。再翻译基础上改改就行。英文翻译不对的就用拼音代替。反正我是这么写的。原创 2016-04-28 12:08:03 · 1662 阅读 · 0 评论 -
LLVM 与 Clang 介绍
原博客地址:http://blog.csdn.net/wwang196988/article/details/6628543晚上听国软徐纪元学弟给我说起了他刚装上的 Mac Lion 操作系统,也说到了最近 Apple 推出的新版本的 Xcode 4.2 在 iOS 4、iOS 5 程序开发中,加入了 automatic reference counting 功能,也即是开发者不再转载 2016-04-18 17:58:58 · 894 阅读 · 0 评论 -
Category
摘要无论一个类设计的多么完美,在未来的需求演进中,都有可能会碰到一些无法预测的情况。那怎么扩展已有的类呢?一般而言,继承和组合是不错的选择。但是在Objective-C 2.0中,又提供了category这个语言特性,可以动态地为已有类添加新行为。如今category已经遍布于Objective-C代码的各个角落,从Apple官方的framework到各个开源框架,从功能繁复的大型APP到转载 2016-04-12 21:41:11 · 575 阅读 · 0 评论 -
Reveal真机查看任意APP
前言:在Xcode开发时,可以使用Xcode自带的 Debug view Hierarchy查看View布局,如下图但是使用起来很麻烦,具体找某个view的时候,还有可能找不到,也不能动态的改变view的属性。这里要推荐一下Reveal。Reveal(http://revealapp.com)是一个很强大的iOS View转载 2016-04-13 10:29:11 · 698 阅读 · 0 评论 -
reveal使用
reveal1.5.1下载,长期可使用,你懂得。。。下载不了了,QQ联系我(957269193)下面是转载别人的接下来 进入真正使用环节(1). 使用Xcode 打开想要查看UI的程序.(2).打开破解好的Reveal 点击Help → Show Reveal Library in Finder第一步(3).将Reveal.framework原创 2016-04-14 09:34:24 · 671 阅读 · 0 评论 -
iOS中堆和栈的区别
原文地址:http://www.cnblogs.com/iphone520/p/3355460.htmliOS中堆和栈的区别管理方式:对于栈来讲,是由编译器自动管理,无需我们手工控制;对于堆来讲,释放工作有程序员控制,容易产生memory Leak。申请大小:栈:在Windows下,栈是向低地址扩展的数据结构,是一块连续的内存区域。这句话的意思是栈顶转载 2016-04-18 15:17:19 · 645 阅读 · 0 评论 -
iOS 离屏渲染的研究(三)-------图片设置圆角性能问题
http://www.jianshu.com/p/34189f62bfd8转载 2016-04-11 21:45:18 · 2918 阅读 · 0 评论 -
iOS Md5编码
//md5 encode+ (NSString *) md5:(NSString *)str{ const char *cStr = [strUTF8String]; unsigned char digest[CC_MD5_DIGEST_LENGTH]; CC_MD5( cStr, (unsignedint)strlen(cStr), diges原创 2016-04-10 10:55:02 · 705 阅读 · 0 评论 -
App 常用的支付方式。
App 常用的支付方式。原创 2016-01-07 23:14:18 · 998 阅读 · 0 评论 -
APP STORE 付费验证(IAP)服务端验证全过程(三)
手游APP Store付费 服务端验证流程苹果付费服务端验证图解我把整个过程叫做三方协定,也叫四次握手.首先,由客户端APP发出购买请求,这里要求要向服务器,苹果APP STORE同时发送购买请求.服务端接收到请求之后,在数据库log_Purcharse中新增一条记录,并将新增记录的ID返回给客户端.(log_Purcharse表的设计见后文)苹果APP转载 2016-03-31 09:38:51 · 3123 阅读 · 0 评论 -
Objective-C中的Block
1.相关概念在这篇笔记开始之前,我们需要对以下概念有所了解。1.1 操作系统中的栈和堆注:这里所说的堆和栈与数据结构中的堆和栈不是一回事。我们先来看看一个由C/C++/OBJC编译的程序占用内存分布的结构: 栈区(stack):由系统自动分配,一般存放函数参数值、局部变量的值等。由编译器自动创建与释放。其操作方式类似于数据结构中的栈,即后进先出、转载 2016-04-28 17:59:10 · 662 阅读 · 0 评论 -
服务端判断苹果内容是否支付完成(二)
1、 从Transaction 的TransactionReceipt属性中得到接收的数据,并以base64编码;2、创建JSON对象,字典格式,单键值对,键名为“receiptdata”,值为上一次编码的数据,效果:{"receipt-data":"base64编码之后的数据"}3、发送HTTP POST请求,将数据发送到App Store ,其地址为:https://buy.itu转载 2016-03-31 09:30:17 · 2310 阅读 · 0 评论 -
更轻量的 View Controllers
View controllers 通常是 iOS 项目中最大的文件,并且它们包含了许多不必要的代码。所以 View controllers 中的代码几乎总是复用率最低的。我们将会看到给 view controllers 瘦身的技术,让代码变得可以复用,以及把代码移动到更合适的地方。你可以在 Github 上获取关于这个问题的示例项目。把 Data Source 和其他 Protoc转载 2016-04-29 19:58:07 · 617 阅读 · 0 评论 -
iOS应用程序生命周期(前后台切换,应用的各种状态)详解
iOS的应用程序的生命周期,还有程序是运行在前台还是后台,应用程序各个状态的变换,这些对于开发者来说都是很重要的。 iOS系统的资源是有限的,应用程序在前台和在后台的状态是不一样的。在后台时,程序会受到系统的很多限制,这样可以提高电池的使用和用户体验。//开发app,我们要遵循apple公司的一些指导原则,原则如下:1、应用程序的状态状态如下:Not running转载 2016-04-29 21:19:02 · 704 阅读 · 0 评论 -
iOS 判断设备
- (NSString*)deviceVersion{ // 需要#import "sys/utsname.h" struct utsname systemInfo; uname(&systemInfo); NSString *deviceString = [NSString stringWithCString:systemInfo.machine en原创 2016-04-28 11:25:48 · 682 阅读 · 0 评论 -
xcode 证书路径
xcode 证书路径 ~/Library/MobileDevice/Provisioning Profiles顶0原创 2016-05-04 09:33:41 · 1172 阅读 · 0 评论 -
App Extensions
http://www.cocoachina.com/industry/20140627/8960.html转载 2016-05-01 21:13:03 · 3619 阅读 · 1 评论 -
iOS Widget(App Extensions Today)证书配置
一、Xcode设置点击项目名称---》TAGGETS---》Gneral---》Team---》设置 对应的开发者账号,这个过程保证网络是好的原创 2016-05-04 17:45:56 · 10619 阅读 · 8 评论 -
iOS itunesconnect 权限分配
开发者账号 itunesconnect 权限分配 ,分配之后,多个成员都可以管理APP,上架,添加新版本原创 2016-05-28 15:55:24 · 8179 阅读 · 0 评论