
iOS
文章平均质量分 71
CG李大仁
https://github.com/limccn/
展开
-
iOS开发之Objective-C中BASE64编码加密解密的使用
BASE64使用常用的URL密文编码方式,用于在HTTP环境下传递较长的标识信息。采用Base64编码不仅比较简短,同时也具有不可读性。以下地址是加密的迅雷专用下载地址,采用的是该编码。如thunder://QUFodHRwOi8vd3d3LmJhaWR1LmNvbS9pbWcvc3NsbTFfbG9nby5naWZaWg==ios中使用BASE64进行加密和解密的方法也很简单,可以直接用goog原创 2016-08-16 10:41:07 · 1437 阅读 · 0 评论 -
[iOS]7.1使用OTA部署APP出现Cannot install applications错误
iOS升级到7.1之后,之前一直使用正常的OTA部署的网站在安装APP时报出了以下错误Cannot install applications because the certificate for www.example.com is not valid而在7.0和之前的版本上没有这类问题,经过调查得知iOS7.1以后强制使用https安全连接方式才能正常部署,OTA部署用plist文件和ipa文原创 2016-08-16 10:43:13 · 643 阅读 · 0 评论 -
iOS开发之Objective-c的SHA224/SHA256/SHA384/SHA512加密算法的实现
之前在博文中实现的SHA1的安全性已经满足不了用户需求,今天把SHA224/SHA256/SHA384/SHA512的实现一并附上。SHA即Secure Hash Algorithm(安全散列算法)有多种不同位数的实现,常见的有SHA224/SHA256/SHA384/SHA512等SHA224:- (NSString*) sha224{ const char *cstr = [self c原创 2016-08-16 10:43:26 · 886 阅读 · 0 评论 -
iOS开发之Objective-c的AES加密和解密算法的实现
高级加密标准(Advanced Encryption Standard,AES),又称Rijndael加密法。以下实现代码中分别为NSData和NSString增加了一个Category。使用时直接调用即可。需要注意的是,AES并不能作为HASH算法,加密并解密后的结果,并不一定与原文相同,使用时请注意进行结果验算。例如解密原文的长度,格式规则等。NG实例原文:170987350密码:170Obj原创 2016-08-16 10:43:29 · 1006 阅读 · 0 评论 -
iOS开发之APP进入后台禁止自动截图
iOS在7.0以后,APP进入后台后会把当前APP的Window状态记录,并对Window进行截图操作,会在APP的Sandbox的Library\Caches\Snapshots\xxxx.xxx.xxx文件夹中增加以下几个文件。这有可能会造成用户敏感数据的泄密。UIApplicationAutomaticSnapshotDefault-LandscapeLeft.pngUIApplicatio原创 2016-08-16 10:43:32 · 5476 阅读 · 0 评论 -
[Xcode]编译时objc_msgSend错误的解决办法
之前开发的代码中需要强制使用一些苹果的私有API,用了objc_msgSend方法进行调用,最近使用最新版本的Xcode进行编译时一致无法通过,后来通过度娘解决了这个问题,在此记录一下,修改方法也很简单,将ENABLE_STRICT_OBJC_MSGSEND的属性值设置为NO就OK,至少目前还没发现程序有什么问题。参考地址http://www.ruanman.net/swift/learn/104原创 2016-08-16 10:44:02 · 1482 阅读 · 0 评论 -
[iOS] iOS9.0 关闭系统强制使用HTTPS
iOS9.0以后出于对请求安全的考虑默认将Foundation.framework中的HTTP请求协议更换为SSL/TLS,也就是说所有由程序发起的HTTP请求默认将请求HTTPS的内容,而且在HTTPS出现404时不会请求HTTP的内容,如果你的APP原来就使用HTTPS,基本问题不大,但是如果使用HTTP的话,就需要:1.修改你的服务器配置,使它支持HTTPS访问2.修改你的info.plis原创 2016-08-16 10:44:07 · 1171 阅读 · 0 评论 -
[Xcode]XcodeGhost问题的检查和验证
这两天XcodeGhost问题搞得国内所有iOS开发者人心惶惶,如果你在编译和上线APP时,使用的是非官方下载的Xcode话,编译出来的app会被注入一段恶意代码,恶意代码会向特定服务器(init.icloud-analysis.com)上传机器相关数据,更严重的是变种的恶意代码还会劫持APP中所有的弹出对话框。给出一个简单的检查方法:1.进入以下目录/Applications/Xcode.app原创 2016-08-16 10:44:15 · 574 阅读 · 0 评论 -
MAC OS编译iOS版Linphone SDK和APP
最近由于开发一款基于SIP通信的VOIP应用程序项目需要,自己研究了一下几款开源SIP实现,主要有PJSIP和Linphone,PJSIP由于文档说明详细,编译和测试都没有费多大事情。Linphone的编译就比较费神费力了,开始之前查看互联网上的资料,大家都说各种痛苦折磨,后来自己实践了一把,除了文档说明奇缺之外,编译还算顺利,除了调查耗费了不少时间。简单说明一下PJSIP和LinphonePJS原创 2016-08-16 10:44:23 · 829 阅读 · 0 评论 -
[iOS]Xcode7.0关闭Bitcode编译
今天在iOS上编译原来开发的代码,出现了以下错误xxxx.o does not contain bitcode. You must rebuild it with bitcode enabled (Xcodesetting ENABLE_BITCODE)百度后知道Xcode7.0以后会默认开启Bitcode模式,很多旧的静态库由于编译问题,无法支持Bitcode,需要重新编译才能使用。如果不想重原创 2016-08-16 10:44:29 · 4188 阅读 · 0 评论 -
[iOS] 实现IIF功能和DECODE函数功能
iOS开发过程中需要处理大量分支判断代码,需要大量使用if、switch等进行分支处理。代码编写和查看都可能出现潜在问题,使用Objective-c语言的自身特点,可以通过以下转换,优化分支判断处理的代码写法。关键是可以一行代码搞定各种分支判断。实现代码简化。使用宏定义将三目运算改为IIF函数运算,类似于EXCEL的IF公式#if !defined(IIF)#define IIF_IMPL(con原创 2016-08-16 10:44:40 · 501 阅读 · 0 评论 -
[iOS]objective-c AES/DES/3DES等加密算法实现
objective-c对AES/DES/3DES等加密提供了统一的加密方法CCCrypt进行实现,目前主要支持的算法有@constant kCCAlgorithmAES128 Advanced Encryption Standard@constant kCCAlgorithmAES Advanced Encryption Standard, 128-bit blo原创 2016-08-16 10:44:48 · 2152 阅读 · 0 评论 -
[iOS]UILabel取消自动Trim空格和换行等空白字符
iOS7.0以后的UILabel会自动将Text行尾的空白字符全部去除,除了常见的半角空格(\0x20)和制表符(\t)之外,全角空格(\u3000)也被计算在内,甚至连多余的换行符(\r,\n)也被自动去除了。这一点虽然方便直接将控件赋值和无需取值后再trim,但是太过智能化了之后,往往不能满足一些本可以简单实现的需求。需求1.使用添加\n方式将上下文本连续空两行,即实现文本的2倍行距。iOS7原创 2016-08-16 10:43:10 · 5073 阅读 · 0 评论 -
[iOS]使用UIActivityViewController实现AirDrop功能
AirDrop是iOS7中新增的一个近距离分享功能,两个相邻的iOS设备可以通过AirDrop实现传递图片、文件等功能,有了AirDrop基本上可抛弃类似Dropbox的ShareLink和PublicFolder功能。iOS7的SDK中已经在UIActivityViewController中内置了AirDrop功能,使用时与分享到twitter和facebook的方式基本一致,只需要将需要传递的原创 2016-08-16 10:43:00 · 2762 阅读 · 0 评论 -
iOS开发之类Siri的语言识别程序的开发与实践(Nuance技术)
相信Iphone4s之后Siri技术又火了一把,不过Siri的成功除了归于苹果公司Steve Jobs的领导之外,Siri的语音识别技术提供商Nuance公司的才是功不可没的。Nuance是最大的专门从事语音识别软件、图像处理软件及输入法软件研发、销售的公司。除了已经红得发紫的Siri,Nuance还有一项破记录的产品,T9输入法,相信在苹果iphone流行之前,用过Nokia神机等品牌手机的用户原创 2016-08-16 10:41:20 · 751 阅读 · 0 评论 -
iOS开发之跑马灯滚动条的两种方法与实现
跑马灯效果的滚动条,一般出现在ios应用的底部。用于显示动态变化的信息或内容较长的信息,在个类应用中使用广泛以下两种可用的跑马灯滚动MarqueeBar的实现。1.直接在ViewController中实现对UIView的位置定时移动来实现,以下代码直接加入到ViewController中,在viewWillAppear中调用loadView即可。- (void)marqueeView{原创 2016-08-16 10:41:26 · 5509 阅读 · 0 评论 -
iOS开发之UIToolbar和UINavigationBar的UIBarButtonItem的距离调整
ios开发过程中,往UIToolbar和UINavigationBar中添加的多个UIBarButton距离通常是固定不可以调整的,比如在UINavigationBar的右侧添加两个以上UIBarButton时,两个UIBarButton加上中间的空白占据了和大一部分的空间,因而在开发iPhone应用程序时,开发者通常使用UISegmentedControl来替代使用两个button。其实如果利用原创 2016-08-16 10:41:28 · 1139 阅读 · 0 评论 -
iOS开发之创建背景透明或含有自定义图片的UIToolbar
iOS系统自带的UIToolbar的样式简单,往往不能满足开发或特殊目的的需要,例如设置完全背景透明的UIToolbar或者自定义UIToolbar的背景色,这时候就需要对UIToolbar进行单独定制。设置UIToolbar背景透明,只需要设置UIToolbar的backgroundColor为[UIColor clearColor]即可,如果需要单独定制UIToolbar的背景色,则需要继承并原创 2016-08-16 10:41:31 · 821 阅读 · 0 评论 -
iOS开发之Relaese时关闭NSLog使之不在控制台显示
iOS开发过程中,记录log最常用的莫过于使用NSLog()函数,DEBUG时默认情况下NSLog()会把log输出到控制台显示,而App发布以后我们就不需要将Log显示了,这时候的策略就是不显示或者将log写入到日志文件。通过以下方法可以可以直接关闭NSLog使之不在控制台显示。//// Close all NSLog()//#ifdef __OPTIMIZE__# define NSLog(.原创 2016-08-16 10:41:33 · 462 阅读 · 0 评论 -
iOS开发之让UITableView滚动控制并返回到最顶端
UITableView控件在iPhone/iPad开发过程的控制有很多很有意思的地方,比如实现在Android中常见的滚动控制并返回到最顶端效果,通过以下代码可以实现,但是需要注意的是,iOS的SDK中的UITableView的scrollRectToVisible方法的参数不能是全0的Rect,否则无效。参考代码;//CGRectMake(0, 0, 1, 1)可以直接返回到UITableVie原创 2016-08-16 10:41:36 · 971 阅读 · 0 评论 -
iOS开发之NSDateFormatter的NSLocale使用en_US_POSIX还是en_US
iOS SDK提供的日期时间格式化对象需要使用到NSLocale对象来控制日期和时间的显示,en_US为标准的格式往往使用的最多,但是习惯使用Java或C#的朋友会忽略掉iOS SDK提供的另一种格式en_US_POSIX,并且两种格式运行后的效果完全一样。参考代码;NSDateFormatter *formatter1 = [[[NSDateFormatter alloc] init] auto原创 2016-08-16 10:41:39 · 5094 阅读 · 0 评论 -
iOS开发之自定义系统的UIAlertView调整Alert字体
iOS中UIAlertView很少有单独定制的需要,一般采用系统样式即可,但是有时候一些特殊的需求(比如:UIAlertView的字体,字体大小,字体对齐方式变化等)就不得不需要单独对UIAlertView进行定制了。定制的方法也很简单,在viewController的Delegate实现方法willPresentAlertView中遍历UIAlertView下面所有subview,找到对应的UI原创 2016-08-16 10:41:42 · 2117 阅读 · 0 评论 -
iOS开发之自定义系统的UIActionSheet修改按钮的属性
iOS中UIActionSheet在SDK中只提供了少数几种样式,这些样式基本可以满足开发需求了,但是也会遇到比较麻烦的要求,这是就需要单独定制UIActionSheet,通过修改button的属性来实现修改,如果是ios4或者之前版本操作起来比较复杂,但是ios5以后,UIActionSheet中的button换成UIButton类型以后就比较容易了,可以直接便利UIActionSheet的所有原创 2016-08-16 10:41:44 · 896 阅读 · 0 评论 -
iOS开发之UITabBarController记录上一次选中的tabIndex并返回
UITabBarController可以实现多个UIViewController独立显示,但是各个UIViewController之间的关系的控制就不太好控制了,特别是没有记录最近一次选中的tab编号,有些需求的实现就比较困难了,比如在A tab下通过一个事件可以切换到上一次选中的B tab,或者A tab中的事件需要切换到B tab并且在B tab处理完成后可以返回到A tab。这时如果可以知道原创 2016-08-16 10:41:47 · 2691 阅读 · 0 评论 -
iOS开发之使用Keychain来存取敏感信息
iOS开发时一般使用UserDefaults来存取App的配置信息,但是如果需要保存一些敏感信息的话,这时可以考虑使用Keychain来存取。开发时需要注意的是,App卸载后UserDefaults的内容会被删除,而Keychain里面的则不会,如果首次将内容写入Keychain,需要判断Keychain中是否包含之前没有删除干净的内容。Keychain(钥匙串)是苹果公司Mac OS中的密码管理原创 2016-08-16 10:42:14 · 582 阅读 · 0 评论 -
Xcode8 beta版无法输出NSLog问题
使用Xcode8的Beta版本进行Objective-C/iOS程序调试时,使用NSLog无法输出日志,同时输出以下内容: subsystem: com.apple.BaseBoard, category: MachPort, enable_level: 0, persist_level: 0, default_ttl: 0, info_ttl: 0, debug_ttl: 0, generate原创 2016-08-16 10:45:09 · 3101 阅读 · 0 评论