
iOS开发
文章平均质量分 65
可爱的程序猿
这个作者很懒,什么都没留下…
展开
-
image 的 AccessibilityIdentifier 属性的使用
有时候我们使用ImageView的时候 想要知道现在的显示的图片是placeHolder的图片还是加载完成或挑选好的图片,但是tag属性只能拿到却不能判断,当然,加几个bool属性也可以完成,但是会有些复杂,如果可以在给imageview 赋图片的时候给图片加个标记,那么下次判断一下标记是不是placeHolder就可以了,很简单。UIImageView * picVi转载 2017-06-09 13:48:24 · 357 阅读 · 0 评论 -
TCP、UDP、HTTP、SOCKET之间的区别
TCP、UDP、HTTP、SOCKET之间的区别IP:网络层协议;TCP和UDP:传输层协议;HTTP:应用层协议;SOCKET:TCP/IP网络的API。 TCP/IP代表传输控制协议/网际协议,指的是一系列协议。 TCP和UDP使用IP协议从一个网络传送数据包到另一个网络。把IP想像成一种高速公路,它允许其它协转载 2015-12-10 16:36:08 · 462 阅读 · 0 评论 -
ARC下OC对象和CF对象之间的桥接(bridge)
在开发iOS应用程序时我们有时会用到Core Foundation对象简称CF,例如Core Graphics、Core Text,并且我们可能需要将CF对象和OC对象进行互相转化,我们知道,ARC环境下编译器不会自动管理CF对象的内存,所以当我们创建了一个CF对象以后就需要我们使用CFRelease将其手动释放,那么CF和OC相互转化的时候该如何管理内存呢?答案就是我们在需要时可以使用__bri转载 2015-11-18 12:12:23 · 229 阅读 · 0 评论 -
IOS 中block结构的简单用法
自从block出现之后,很多API都开始采用这样的结构,由此可见,block确实有许多优势存在,这里将一些简单用法总结如下:一、如何声明一个block变量我们通过^符号来声明block类型,形式如下:void (^myBlock)();其中第一个void是返回值,可以是任意类型,中间括号中^后面的是这个block变量的名字,我把它命名为myBlock,最后一个括转载 2015-11-18 17:23:45 · 725 阅读 · 0 评论 -
iOS库 .a与.framework区别和制作
一、什么是库?库是共享程序代码的方式,一般分为静态库和动态库。二、静态库与动态库的区别?静态库:链接时完整地拷贝至可执行文件中,被多次使用就有多份冗余拷贝。动态库:链接时不复制,程序运行时由系统动态加载到内存,供程序调用,系统只加载一次,多个程序共用,节省内存。三、iOS里静态库形式?.a和.framework四、iOS里动态库形式?转载 2015-12-08 14:12:27 · 669 阅读 · 0 评论 -
WWDC总结:开发者需要知道的iOS 9 SDK新特性
编者按:WWDC 2015苹果开发者大会是移动开发者一年一度的盛会,InfoQ中文站除了第一时间整理Keynote内容分享给大家之外,还邀请了资深的一线开发者分享他们的收获。本文为王巍(@onevcat)对WWDC上透露的iOS 9 SDK新特性的总结,分享给广大的iOS开发者。年年岁岁花相似,岁岁年年人不同。今年的 WWDC 一如既往的热闹,得益于 Apple 的随机抽选机制转载 2015-07-14 16:19:53 · 583 阅读 · 0 评论 -
MediaPlayer 和 AVPlayer
avPlayer是比较底层的avFoundation的API,底层的API都是很多功能和参数要自己做,定制起来方便,但是一开始使用时,很难用,自己搞很多代码。尤其是要自己写UI。因为底层的API,所以扩展性很好,比如AVQueuePlayer就是一个无缝的队列播放器,能自动播放多个文件来源。 还有就是AVFoundation库允许你自己做定制,比如转换和编解码等。MPMo转载 2015-07-14 16:16:27 · 1598 阅读 · 0 评论 -
instancetype、id、NSObject的区别
1、instancetype只能用于方法的返回类型,而id用处和NSObject *类似。2、instancetype会告诉编译器当前的类型,这点和NSObject *类似,但id对于编译器却是无类型的,调用任何方法不会给出错误提示。3、对于init方法,id和instancetype是没有区别的。因为编译器会把id优化成instancetype。当明确返回的类型就是当前Class转载 2015-07-26 18:53:46 · 306 阅读 · 0 评论 -
button的几个不太关注属性showsTouchWhenHighlighted
/* * 默认情况下,当按钮高亮的情况下,图像的颜色会被画深一点,如果这下面的这个属性设置为no, * 那么可以去掉这个功能 */ button1.adjustsImageWhenHighlighted = NO; /*跟上面的情况一样,默认情况下,当按钮禁用的时候,图像会被画得深一点,设置NO可以取消设置*/ button1原创 2015-06-11 12:18:06 · 836 阅读 · 0 评论 -
IOS唯一标识
uuid,如果用户删除该应用再次安装时,又会生成新的字符串,所以不能保证唯一识别该设备CFUUID从iOS2.0开始,CFUUID就已经出现了。它是CoreFoundatio包的一部分,因此API属于C语言风格。CFUUIDCreate 方法用来创建CFUUIDRef,并且可以获得一个相应的NSString,如下代码:CFUUIDRef cfuuid =CFUUIDCr原创 2015-04-29 17:09:20 · 244 阅读 · 0 评论 -
移动应用开发技术选择六要素:慎重选平台
作者从平台环境、操作系统、设备能力、云端、应用类型、跨平台开发六大方面分享了其在移动应用开发中的技术选择经验。这 是一个新的时代、新的机会。自从2007 年1月乔布斯揭开iPhone的面纱以来,移动时代的大潮滚滚向前,已经走过近5个年头。这个产业正在从新生走向成熟阶段。在这样的产业时代背景下,各种 不同的系统平台,不同的技术路线,自然是层出不穷、迅猛发展。对于每一个投身于移动行业的软件开发转载 2015-06-08 16:46:35 · 453 阅读 · 0 评论 -
闹钟APP自动通知
闹钟APP 是如何在关闭APP得情况下,还可以在设置时间开启得情况下,自己启动。使用UILocalNotification,本地通知。原创 2015-06-25 17:39:08 · 364 阅读 · 0 评论 -
【iOS】如何判断文本文件的字符编码格式
总体思路:遍历所有的字符编码,能正确读取输出转换的就是文本文件的编码格式。代码如下:[objc] view plaincopy// // main.m // 检测文本字符编码格式的小技巧 // // Created by 杜子兮 (duzixi) on 14-6-21. //转载 2015-05-19 14:12:11 · 1855 阅读 · 0 评论 -
微信关注即可使用Wi-Fi是怎样实现的?
无线路由器一般通过手机WIFI的mac地址来选择放行/禁止其联网的行为。无线路由器一般有类似管理接口,使得像RADIUS服务器可以通过该接口控制无线路由器对终端MAC地址的过滤行为。AD:干货来了,不要等!WOT2015 北京站演讲PPT开放下载!不请自来,本人之前接私活,做过类似项目的TPM,在本人所接手的项目中,用户的体验其实没有之前诸位说的那么差,至少转载 2015-06-03 14:07:44 · 508 阅读 · 0 评论 -
__NSCFString containsString:]: unrecognized selector sent to instance 的解决方案
代码:[objc] view plaincopyprint?NSString *urlString = [[request URL] absoluteString]; if([urlString containsString:@"mark"]) { // do something } 这段代码,没有转载 2015-06-23 11:20:24 · 584 阅读 · 0 评论 -
iOS项目中常用的第三方开源库
1.项目使用的第三方开源库 项目使用了CocoaPods(类似java中的maven)管理常用的第三方库,一些特殊的单独引用,下面介绍下比较好用的几个。(1)AFNetworking目前比较推荐的iOS网络请求组件,默认网络请求是异步,通过block回调的方式对返回数据进行处理。需要注意的是AFNetworking对服务器返回的ContentType要求比转载 2015-12-11 11:15:19 · 363 阅读 · 0 评论 -
ARC如何获取retainCount
You can use CFGetRetainCount with Objective-C objects, even under ARC:NSLog(@"Retain count is %ld", CFGetRetainCount((__bridge CFTypeRef)myObject));原创 2015-11-18 12:13:26 · 551 阅读 · 0 评论 -
三种解密 HTTPS 流量的方法介绍
Web 安全是一项系统工程,任何细微疏忽都可能导致整个安全壁垒土崩瓦解。拿 HTTPS 来说,它的「内容加密、数据完整性、身份认证」三大安全保证,也会受到非法根证书、服务端配置错误、SSL 库漏洞、私钥被盗等等风险的影响。很多同学认为只要访问的网站地址前有一把小绿锁就绝对安全,其实不然。本文通过介绍三种最常规的 HTTPS 流量解密方法及原理,浅谈一下 HTTPS 的安全风险。Ma转载 2016-11-28 17:05:30 · 797 阅读 · 0 评论 -
加密算法rsa
常用的加密算法对称密码算法:是指加密和解密使用相同的密钥,典型的有DES、RC5、IDEA(分组加密),RC4(序列加密);非对称密码算法:又称为公钥加密算法,是指加密和解密使用不同的密钥(公开的公钥用于加密,私有的私钥用于解密)。比如A发送,B接收,A想确保消息只有B看到,需要B生成一对公私钥,并拿到B的公钥。于是A用这个公钥加密消息,B收到密文后用自己的与之匹配的私钥解密即可。反过来也原创 2016-11-28 16:08:53 · 958 阅读 · 0 评论 -
IOS中的堆栈
在计算机系统中,运行的应用程序的数据都是保存在内存中的,不同类型的数据,保存的内存区域不同。一、内存分区栈区(stack) 由编译器自动分配并释放,存放函数的参数值,局部变量等。栈是系统数据结构,对应线程/进程是唯一的。优点是快速高效,缺点时有限制,数据不灵活。[先进后出]栈空间分静态分配 和动态分配两种。 静态分配是编译器完成的,比如自动变量(auto)的分配。 动转载 2016-11-24 20:37:49 · 667 阅读 · 0 评论 -
iOS中 category 和extension的区别
原文链接:http://www.cnblogs.com/pengyingh/articles/2348514.htmlCategory和Extension这两个概念,即便对于Java程序员,可能也会感到陌生。这是Objective C为程序员提供的两个强大的动态机制——简单地说,它们允许程序员为已有的对象添加新的方法,即便是在没有该对象的源代码的情况下。Category准确的定义是转载 2016-11-22 21:30:29 · 586 阅读 · 0 评论 -
通过GCD中的dispatch_barrier_(a)sync加强对sync中所谓等待的理解
首先解释下标题里地括号是什么意思,GCD有个函数叫dispatch_barrier_async,还有个函数叫dispatch_barrier_sync,这个括号只是用来防止标题取得太长…>_对于dispatch_barrier_async可能有的朋友没用过,不知道它是干嘛的,简单地介绍一下下,知道的朋友可以跳过此段。 假设我们原先有6个任务要执行,我们现在要插入一个任务0,这个任务0要转载 2016-12-01 22:31:05 · 470 阅读 · 0 评论 -
gcd中group实现并发任务全部完成后
A B C D 4个并发下载任务,怎样在第一时间知道任务全部完成?dispatch_group 可以帮我们实现这样的控制。上代码,看说明.[objc] view plain copy dispatch_group_t group = dispatch_group_create(); // 某个任务放进 group di转载 2016-12-01 22:27:47 · 311 阅读 · 0 评论 -
iOS 中const的使用
说真的,const是c语言的内容,但一直在iOS没有很好的结合,借此机会说明一下const的用法。在程序中我们会经常的遇到一些常量是经常使用的,我们通常将他们定义成 枚举类型 或是 宏定义类型 再或是const常量,今天介绍的是const常量。用const定义过的常量我们可以在多个文件中使用,相比于宏定义而言有不少优势。宏定义属于预编译指令,在程序运行之前已经编译好了的,比如说转载 2016-11-15 14:34:30 · 260 阅读 · 0 评论 -
Charles 手机抓包连接教程,亲身试过
最近使用Charles抓包,在网上搜教程,很多教程都不完整,弄了好久才弄好连接手机抓包功能,这次自己整理一下,分享出来,也便于以后自己使用,下面开始吧。1、 安装Charles破解安装包地址:http://pan.baidu.com/s/1kUUj2gn包含证书和破解jar包2、安装好,Charles之后,进行配置,要确保在一个wifi环境中,使用ifconfig en转载 2016-08-18 17:46:33 · 6455 阅读 · 1 评论 -
vc跳转界面样式
【Modal跳转界面样式】Modal视图跳转的时候,默认界面是从从下往上出现的。这样其实非常的单调。苹果也给我们提供了几种不同的样式。并且注意,storyboard中的界面如果没有使用segue进行跳转的话,跳转代码中要使用instantiateViewControllerWithIdentifier这个方法来进行绑定。[objc] view plain转载 2016-08-18 14:56:01 · 610 阅读 · 0 评论 -
ios 跳转指定页面和插入页面
(1)Navigation+Tab构建项目目前市面上大多数的iOS App,都是使用Navigation+Tab的方式来构建,这基本上是一种主流趋势。因为有了这两个工具,可以方便的对程序的流程和页面进行控制,整体的逻辑结构也会变得清晰。我的项目主要使用xib来构建项目,已经删除了自带的Main.storyboard。在AppDelegate.h中声明一个TabBar属性:转载 2016-08-18 14:42:32 · 3312 阅读 · 0 评论 -
iPhone/iOS中保存自定义对象(Custom Object/Custom Class)的数组(NSMutableArray/NSArray)到NSUserDefaults
【问题】在折腾:给Your Second iOS App:BirdWatching添加支持程序退出后,用户数据仍然保留的过程中,遇到一个问题,需要将一个自定义对象的数组,保存到NSUserDefaults。 【解决过程】1.经过学习很多资料后,然后加上一番折腾,先去实现了单个自定义对象的编解码和存储/恢复:贴出部分相关的代码:Bi转载 2015-11-19 18:13:19 · 1619 阅读 · 0 评论 -
解析LayoutSubviews
解析LayoutSubviews从百度上搜索了一下layoutSubviews的用处,以下是搜索的结果,当然,笔者是会一一验证的.1、 init初始化不会触发layoutSubviews2、 addSubview会触发layoutSubviews3、 设置view的Frame会触发layoutSubviews,当然前提是frame的值设置前后发生了变化转载 2015-11-19 16:20:42 · 215 阅读 · 0 评论 -
ios上1像素的问题
探讨iOS某个像素点是否显示依据,以摸索为什么iOS没适配的应用在iphone6上面线的粗细会不稳定。有的线会变粗。先说一下系统对某个像素点是否显示的依据:// 如果单个像素分为10格,如上图,从上往下第5格被填充或从右往左第5格被填充,则该像素就会被显示;实际上系统会划分的更细,不只是10格。// 下面是横向的测试代码,需要转载 2015-12-11 14:36:52 · 1238 阅读 · 0 评论 -
关于OC中引用计数问题
1:被release之后的引用计数 // class1 仅仅是一个自定义类 没有任何方法和属性 class1 * c1 = [[class1 alloc]init]; NSLog(@"c1的retainCount = %lu",(unsigned long)[c1 retainCount]); //输出结果为 1 当一个对象的引用计数为1的时候,再被release原创 2015-11-18 17:22:11 · 957 阅读 · 0 评论 -
GCD使用经验与技巧浅谈
GCD(Grand Central Dispatch)可以说是Mac、iOS开发中的一大“利器”,本文就总结一些有关使用GCD的经验与技巧。dispatch_once_t必须是全局或static变量这一条算是“老生常谈”了,但我认为还是有必要强调一次,毕竟非全局或非static的dispatch_once_t变量在使用时会导致非常不好排查的bug,正确的如下:转载 2015-05-21 14:44:17 · 273 阅读 · 0 评论 -
摇一摇 周边 与 ibeacon
“周边”即将入驻微信公众平台“周边”(zb.weixin.qq.com)平台一直以独立页面的方式存在,之前并未与微信公众平台(mp.weixin.qq.com)合并,对外宣称还尚处于公测阶段。最近,微信表示“周边”即将正式在公众平台上线,也将开发更多的设备ID供商户和开发者使用。微信组建周边团队,并为iBeacon在摇一摇中开辟专门通道,明显是看中了iBeacon在线下宣传和连接O转载 2015-05-20 14:49:42 · 1273 阅读 · 0 评论 -
const int *p和int * const p的区别(常量指针与指向常量的指针)
对于指针和常量,有以下三种形式都是正确的:const char * myPtr = &char_A;//指向常量的指针char * const myPtr = &char_A;//常量的指针const char * const myPtr = &char_A;//指向常量的常量指针下面依次对这三种类型进行介绍。因为*操作符是左操作符,左操作符的优先级是从右到左,对于转载 2015-05-13 17:46:58 · 426 阅读 · 0 评论 -
最新版SDWebImage的使用
我之前写过一篇博客,介绍缓存处理的三种方式,其中最难,最麻烦,最占内存资源的还是图片缓存,最近做的项目有大量的图片处理,还是采用了SDWebImage来处理,但是发现之前封装好的代码报错了。研究发现,是我用了新版的SDWebImage,好多方法都变了。现在把代码贴出来,供大家参考。尤其是新手,看完这篇博客,图片缓存so easy。最后有demo供大家下载,先学习。第一步,下载SDW转载 2015-04-15 15:42:56 · 269 阅读 · 0 评论 -
关于SVN 目录结构
Subversion有一个很标准的目录结构,是这样的。比如项目是proj,svn地址为svn://proj/,那么标准的svn布局是 svn://proj/ | +-trunk +-branches +-tags 这 是一个标准的布局,trunk为主开发目录,branches为分支开发目录,tags为tag存档目录(不允许修改)。但是具体这几转载 2015-03-11 15:25:12 · 214 阅读 · 0 评论 -
分享
SSO指单点登录,当用户安装了对应第三方客户端且登录时,可以在登录时免去输入账号密码的过程,简化分享流程。为什么要配置 URL schemesURL schemes 和跳出应用后返回应用的逻辑相关,因此如果使用了SSO授权功能或QQ、微信、webview方式的Facebook,就必须配置URL schemes,否则跳出应用后将无法返回转载 2015-03-10 17:39:14 · 341 阅读 · 0 评论 -
XCode 项目配置说明
初学XCode最让人头疼的就是项目各属性设置,各种不解,这里做个总结:项目配置:基本项(Basic)1、Architectures(指令集)——设置你想支持的指令集,目前ios的指令集有以下几种:(1)armv6,支持的机器iPhone,iPhone2,iPhone3G及对应的iTouch 2,(2)armv7,支持的机器iPhone4,iPhone4S转载 2015-03-11 15:26:48 · 239 阅读 · 0 评论 -
registerForRemoteNotificationTypes: is not supported in iOS 8.0 and later
registerForRemoteNotificationTypes: is not supported in iOS 8.0 and later IOS8 PUSH解决方法昨天晚上整理PUSH的东西,准备些一个教程,全部弄好之后,发现没有达到预期的效果,本以为是服务器代码的问题(因为本人对PHP代码一点都不懂),所以在网上四处搜索,后来看xcode log才发现,原来转载 2015-03-26 11:38:36 · 279 阅读 · 0 评论 -
Version和Build的区别
一个version,一个build,都是设置版本的地方,有什么区别呢?在ios中(Android等工程中也一样),有两种version,一种是 CFBundleVersion ("Bundle Version"),也就是我们看到的version,另一种是CFBundleShortVersionString ("Bundle version string, short"),也就是我们看到的B转载 2015-03-05 11:20:07 · 662 阅读 · 0 评论