
iOS开发
文章平均质量分 52
超果子
未来就在脚下
展开
-
使用二维码——第三方库ZBar和libqrencode的使用
1.下载ZBar SDK并导入工程地址:https://github.com/bmorton/ZBarSDK2.往项目中添加Framework框架及动态库AVFoundation.framework,CoreMedia.framework,CoreVideo.framework,libiconv.dylib和libber.a3.在使用的地方引入头文件#import "ZBarS原创 2015-04-14 23:36:51 · 2837 阅读 · 0 评论 -
AFNetworking3.0使用
其实大量参考了其他文章,但是这篇博客是我写的。编辑于2016/01/04github地址:https://github.com/AFNetworking/AFNetworking/wiki/AFNetworking-3.0-Migration-Guide#new-requirements-ios-7-mac-os-x-109-watchos-2-tvos-9--xcode-7原创 2016-01-04 16:35:35 · 2789 阅读 · 1 评论 -
iOS开发:绘制像素到屏幕
UI的底层原理,值得一看。像素是如何绘制到屏幕上面的?把数据输出到屏幕的方法有很多,通过调用很多不同的framework和不同的函数。这里我们讲一下这个过程背后的东西。希望能够帮助大家了解什么时候该使用什么API,特别是当遇到性能问题需要调试的时候。当然,我们这里主要讲iOS,但是事实上,很多东西也是可以应用到OSX上面的。Graphics Stack绘制屏幕的过程中又转载 2015-10-11 22:05:51 · 689 阅读 · 0 评论 -
Xcode删除已安装的插件
平时开发中用了六七个插件,感觉方便很多 。不过Xcode升级到7.0.1后有的插件不好用了,经常引起Xcode自动退出。找了一下删除插件的方法,从终端进入目录(相对路径):$HOME/Library/Application\ Support/Developer/Shared/Xcode/Plug-ins/将里面对应的插件删除即可。原创 2015-10-24 11:44:52 · 1130 阅读 · 0 评论 -
将输出绑定到UITextView
使用的iOS重定向的方式,将原本输出到Xcode内的文本全部绑定到UITextView上。原来的地址不记得了。- (void)redirectNotificationHandle:(NSNotification *)nf{ NSData *data = [[nf userInfo] objectForKey:NSFileHandleNotificationDataItem];转载 2015-09-11 17:32:09 · 487 阅读 · 0 评论 -
ios跳转设置各种功能
大家都知道,在iOS5.0时时可以跳转到系统的设置页的。但是在5.1之后就不可以了。刚才研究了下这个问题,发现只有iOS8可以跳转到系统设置里自己App的页面。目前没有找到iOS7怎么跳转过去。如果你知道请一定要留言告知,Thanks!下面说下iOS8是如何跳转的,以下是代码:[objc] view plaincopyprint?转载 2015-09-24 22:28:44 · 520 阅读 · 0 评论 -
将特殊字符插入数据库
最近测试的发现有的插入数据库的信息会丢失,一直不清楚怎么回事;今天仔细看了下数据库才知道一些特殊字符是不能直接插入数据库的,比如单引号在数据库语句中表示引用其他字符,如果向数据库直接插入“Tom's cat”这样的字符串就会失败。那么这种情况要怎么解决呢?查了一下资料一般有两种方案:一种是先对字符串进行转义,然后插入数据库,这是根本的解决方案;还有一种不那么“本质”但是相当漂亮的方法,先对字符原创 2015-09-24 22:04:48 · 6928 阅读 · 0 评论 -
iOS之缓存数据
1.问题的提出很多时候,对同一个URL请求多次,返回的数据可能都是一样的,比如服务器上的某张图片,无论下载多少次,返回的数据都是一样的。这样会造成两个问题:(1)用户流量的浪费(2)程序的响应速度不够快解决上面的问题,一般考虑对数据进行缓存。比较好的策略是先将数据缓存下来,然后定期清除缓存数据;同时应允许用户手动重新加载数据(如果数据有更新的话)转载 2015-08-19 23:06:00 · 491 阅读 · 0 评论 -
iOS常用的函数和常数
介绍一下Objective-c常用的函数,常数变量算术函数【算术函数】函数名说明int rand()随机数生成。(例)srand(time(nil)); //随机数初期化int val = rand()P; //0~49之间的随机数int abs(int a)整数的绝对值(例)int val转载 2015-08-19 17:30:22 · 322 阅读 · 0 评论 -
多线程之四:NSOperation与NSOperationQueue
1.NSOperationQueue:代表一个FIFO的队列,它负责管理系统提交的多个NSOperation,NSOperationQueue底层维护一个线程池,会按顺序启动线程来执行提交给该队列的NSOperation任务。NSOperation:代表一个多线程任务。NSOperation还有NSInvocationOperation.NSBlockOperation两个子类。N原创 2015-08-19 17:19:41 · 374 阅读 · 0 评论 -
多线程之三:NSThread
1.创建线程两种方式://初始化方法thread1 = [[NSThread alloc]initWithTarget:self selector:@selector(reduceCount)object:nil]; [thread1 setName:@"减少count"]; [thread1 start];//需要手动开始//类方法原创 2015-08-15 12:24:48 · 422 阅读 · 0 评论 -
多线程之二(线程安全)
1.@synchronized关键字多块资源在同时访问同一块资源时,可以对线程响应的代码加互斥锁(只能加一把锁)同步锁需要消耗大量的CPU资源,建议少用。@synchronized(self){ //检查票数 int count = self.leftTicketsCount; if (coun原创 2015-08-15 12:23:41 · 408 阅读 · 0 评论 -
iOS开发之设计模式
最近开始关注程序的设计模式,阅读一些专业资料有点困难,不过目前对iOS开发常用的4种模式了解较多:MVC模式,单例模式,观察者模式,委托模式。这都是iOS工程师必须了解的4种模式。后来看到一篇文章,对iOS中的设计模式讲的更多,与大家分享一下。1.MVC模式2.单例模式(Singleton)3.外观模式(Facade)通过一个工具类来转载 2015-08-15 12:16:30 · 483 阅读 · 0 评论 -
延长启动页时间
做了一个比较简单的智能产品,客户觉得启动页加载时间太短了(这个客户品味确实和一般人不一样)。开始想着是不是要在启动时做一下耗时操作(纯属自虐),后来找到一个办法。 首先,启动画面图片Default.png的原本目的只是为了填补程序完成加载前的黑屏而已,如果直接说控制这段加载时间,就我个人的认识而言,不可能达到。但是不能达到,并不意味着,我们不能实现控制的效果。接下来,就原创 2016-01-04 16:38:50 · 1441 阅读 · 0 评论 -
ios概念之static,const,extern
其实我自己大多数文章都是经过自己消化,然后弄出来的。和人家的有一些区别,但是不能完全说自己写的,所以我归类到转载,参考文章确实不记得了。之前有的文章已经归到原创了,以后尽量加这个说明,希望不会被骂。const是只读,表明该变量不能够被修改(也不会对它修改);static表示静态变量,当函数执行完后该变量不会被释放;下次读取时,从之前的内存中读取上次的值;在和转载 2016-01-04 16:42:56 · 412 阅读 · 0 评论 -
编译参数-ObjC的说明
引入第三方库时,一些第三方库对系统库的类加了category。这是需要使用编译参数:-ObjC,这样第三方库中对系统类做的扩展方法才能在工程中使用。-all_load 这个flag是专门处理-ObjC的一个bug的。用了-ObjC以后,如果类库中只有category没有类的时候这些category还是加载不进来。变通方法就是加入-all_load或者-force-load。-a原创 2016-01-04 16:44:00 · 572 阅读 · 0 评论 -
NSObject,NSProxy以及异常处理
参考资料: https://my.oschina.net/iq19900204/blog/411450http://blog.youkuaiyun.com/devday/article/details/7418022http://ios.jobbole.com/87856/1. NSProxy和NSObject基本所有的iOS中的类都是NSObject的字类,但是NSProxy不是。 NSProxy是一个虚原创 2017-03-17 21:30:57 · 830 阅读 · 0 评论 -
AppleScript语言介绍(译文)
之前的一篇文章,从我的简书上搬了过来。翻译地址:https://developer.apple.com/library/mac/documentation/AppleScript/Conceptual/AppleScriptLangGuide/introduction/ASLR_intro.html注:AppleScript准确说是苹果脚本,是Apple公司推出来的支持mac的一种脚本语言,支持ma翻译 2017-03-16 17:02:05 · 1807 阅读 · 0 评论 -
block内存管理
http://blog.devtang.com/2013/07/28/a-look-inside-blocks/http://www.cocoachina.com/ios/20161025/17198.html巧神的博客真心值得一看,因为不清楚他是否允许转载,我这里就放个链接。转载 2017-02-22 22:47:50 · 342 阅读 · 0 评论 -
设计一个对角棋(二)
这个对角棋我将使用swift+SpriteKit实现。本篇介绍基本的逻辑处理。初步考虑,有以下过程是我必须实现的:1.绘制棋盘,加载棋子;2.移动棋子的逻辑;3.判定胜负的逻辑。在实际做的过程中,还有更多零碎的逻辑等着我实现。1.定义各种记录数据的变量。 //棋盘的变量 var chessMap:ChessMap? //记录你此时是否已经点击了原创 2017-02-22 22:10:06 · 1250 阅读 · 0 评论 -
设计一个对角棋(一):开篇
一直以为编程最大的乐趣,在于可以用各种方式实现自己的想法;这实质上是一个提升和创造的过程。公司的项目做的多了,难免雷同,然而每个项目做下来还是有不少收获。但是论创造的乐趣,自然远不如自己创建新的城堡,这也是开源项目的源动力之一。很遗憾,这次出来的依然是个半成品,页面并不精美,声音效果还未加入,但是基本的结构已经有了。毕竟下班之后时间不算多,会被很多其他事情耽误的,而且这个小游戏只是我最近研究的原创 2017-02-22 22:08:59 · 3876 阅读 · 0 评论 -
做一个iOS的简单计算器(二)
接上一篇,我已经完成了多个小数点,除零,格式异常等处理,直接上代码,使用swift写的。首先是一个处理栈等基本功能的类。//定义一个处理基本操作的类class CalculateTool: NSObject { var opndStack:ArrayString>? //运算数栈 var optrStack:ArrayString>? //运算符栈原创 2017-02-22 22:06:03 · 2454 阅读 · 0 评论 -
iOS去除数组重复元素
经过面试时问到这个题目,回答了几种方法,足够简单了,结果面试官要求一行代码搞定。呵呵哒!我当时确实不清楚最后最简单的答案,但是感觉没必要这么苛刻的。 转载地址:http://blog.youkuaiyun.com/wm9028/article/details/49926535第一种:利用NSDictionary的AllKeys(AllValues)方法代码:转载 2016-03-30 16:35:37 · 718 阅读 · 0 评论 -
动画效果汇总(一):页面跳转和添加
我的博客大部分都是从笔记直接拉过来的,没有精雕细琢,请见谅。这一篇最后一段代码还是有点用的。1. 基本动画 //动画 [UIView beginAnimations:nil context:nil]; //设定动画持续时间 [UIView setAnimationDuration:2]; //动画的内容 frame.origin.y +=原创 2016-01-08 11:49:25 · 810 阅读 · 0 评论 -
ios创建横屏启动页
最近做到一个只支持横屏的项目,横屏的启动页页也轻松搞定了(搞不定的网上大把资料)。但是客户反馈说4S(iOS9)上一直启动页黑屏,我看了一下确实只有4s是这样,所以查了一些资料,没有解决问题,不过也提供了一些思路。最后自己花了半天时间搞定:1.将横屏的切图放到Launch Image中;2.先将项目设置为只支持竖屏,如图所示。这个时候运行一下,4s上应该有启动图出现,如果没有则原创 2016-01-05 13:58:48 · 5058 阅读 · 0 评论 -
ios基础之调试篇
1.常用3种断点文件行断点:在某一行代码处的断点符号断点:可以定位到某些方法异常断点:可以在抛出或者捕获异常时调用,可以选择不同的语言(c/c++/object-c)swift断点:捕捉swift中的错误测试失败的断点:还未尝试过.2.抛出异常:使用断言NSAssertNSAssert(i95, @"i=%d已经大于95了",原创 2016-01-04 16:48:45 · 704 阅读 · 0 评论 -
多线程之基本概念篇
转载地址:http://www.cnblogs.com/wendingding/p/3806821.html1.线程与队列队列可以看作对线程的封装和替代方案,在GCD中,我们面对的是队列,而不必直接去处理线程。当我们将任务添加到队列中,GCD会自动将队列中的任务取出,放到对应的线程中执行。注:任务的取出遵循队列的FIFO原则:先进先出,后进后出。转载 2016-01-04 16:46:37 · 348 阅读 · 0 评论 -
nil,Nil,NULL和NSNull的理解
转载地址L:http://magicalboy.com/null-value-in-objective-c/nilnil是Objc对象的字面空值,对应id类型的对象,或者使用@interface声明的Objc对象。 NSString *text = nil; id sth = nil;NilNil是Objc类类型的书面空值,对应Class类型转载 2016-01-04 16:45:21 · 345 阅读 · 0 评论 -
IOS开发之粒子效果
粒子效果非常漂亮,在应用中可能用的不多,但是可以给用户眼前一亮的感受。粒子效果主要用到两个类:CAEmitterLayer和CAEmitterCell.步骤如下:1.添加框架#import 2.设定两个类CAEmitterLayer和CAEmitterCell首先定义一个View- (id)initWithFrame:(CGRect)fr转载 2015-08-15 12:11:48 · 977 阅读 · 0 评论 -
Xcode工程文件无法打开
解决方法:1.对.xcodeproj 文件右键,显示包内容 2.双击打开 project.pbxproj 文件 3.找到以上类似的冲突信息(可以用commad + f 搜索) 4.删除 >>>>>这些行 5.保存,退出 6.重新打开.xcodeproj文件即可原创 2015-08-15 12:06:22 · 1598 阅读 · 0 评论 -
iOS新的打包方式
一直都使用achieve命令打包文件,需要选取对应的证书,而且工程中不能有大问题。有时开发中由于某些原因打包的文件在手机上安装失败,这时候可以尝试别的打包方式。1。首先程序必须运行成功,然后必须在程序列表的Product中找到app文件。2.将app文件show in finder。3.选择对应的3个点(箭头所示),选择下方的应用程序。将2中对应原创 2015-08-15 12:21:51 · 336 阅读 · 0 评论 -
生成蓝牙协议的UUID
iOS使用ble时协议中需要定义三个UUID;可以用一下方法生成:打开终端,输入uuidgen即可。原创 2015-05-03 23:30:16 · 1428 阅读 · 0 评论 -
iOS自定义的UISwitch按钮
转载地址:http://blog.youkuaiyun.com/totogo2010/article/details/8373541这是一位大牛,喜欢看博客的新手不要错过了。因为项目需要在UISwitch按钮上写文字,系统自带的UISwitch是这样的:既不能写字,也不能改颜色,于是在网上找到了这么一个自定义的Switch按钮,具体出处找不见了。记录一下,怕以后找不转载 2015-05-03 23:34:59 · 687 阅读 · 0 评论 -
ios之给予应用评价
一般app的评论都是在App Store之进行管理,我们不能直接在app中修改或者编辑评论,必须借助系统的App Store软件。首先app必须是提交到iTunes Connect的(废话,还没上架谁给你评论啊),我们可以从iTunes Connect上获取到程序编号:Apple ID。如果要评论的程序的Apple ID是123456789,那么跳转到评论的代码如下:NSStr原创 2015-05-11 19:24:45 · 440 阅读 · 0 评论 -
iOS之pliat文件的读写
转载地址:http://blog.youkuaiyun.com/totogo2010/article/details/7634185著作权声明:本文由http://blog.youkuaiyun.com/totogo2010/原创,欢迎转载分享。请尊重作者劳动,转载时保留该声明和作者博客链接,谢谢! 在做iOS开发时,经常用到到plist文件, 那plist文件是什么呢? 它全名是:Proper转载 2015-05-10 23:59:52 · 611 阅读 · 0 评论 -
iOS程序生命周期详解
转载地址:http://blog.youkuaiyun.com/totogo2010/article/details/8048652这篇文章讲述的东西大多数我都知道,但是仍有一些收获。希望大家喜欢! iOS的应用程序的生命周期,还有程序是运行在前台还是后台,应用程序各个状态的变换,这些对于开发者来说都是很重要的。 iOS系统的资源是有限的,应用程序在前台和在后台的状态是不一样的。在后台时,程序转载 2015-05-11 00:20:31 · 364 阅读 · 0 评论 -
子类中初始化错误Cannot assign to ’self’ outside of a method in the init family
真的涨知识了,今天写一个NSObject的子类时意外报错“Cannot assign to ’self’ outside of a method in the init family”,查阅资料才看到原因:我们只能在init方法中给self赋值,Xcode判断是否为init方法的规则:方法必须返回id,并且名字以init + 大写字母开头+ 其他 为准则。将init后第一个字母改为大写即可。转载 2015-04-29 20:55:31 · 488 阅读 · 0 评论 -
添加pch文件
Xcode前两年是自动在工程中添加pch文件的,后来取消掉了;大概原因是引入头文件过多可能造成工程的混乱,所以苹果将选择权还给了用户。以前看过一位大牛写的文章,关于pch文件讲的十分深入。现在一时间找不到了。其实只要整个工程只要能够做到逻辑清晰,分工明确,深得MVC的精髓的话,可以避免许多未知的问题。我曾经独立做的第一个项目代码十分混乱,后来修改的连我自己也不想再看了。后来打包成功后在真机上无法运原创 2015-04-29 20:57:31 · 515 阅读 · 0 评论 -
去掉单独某个类的arc机制
博主是去年8月开始接触IOS开发的,此时ARC机制早已在IOS开发中广泛运用,给开发者带来了极大的方便,省去了大部分的对象释放问题,使得开发者能够将精力集中在功能和UI的实现上。然而在一些第三方库的引入时,由于开发时间较早或者其他原因,往往需要将引入库的ARC去掉,方法如下:在使用第三方库GDataXML时用到这一点,进入Target—>Build Phases—>Copile Sourc原创 2015-04-24 22:04:37 · 440 阅读 · 0 评论 -
IOS访问通讯录
可参考:http://blog.youkuaiyun.com/tonny_guan/article/details/9211797很多app需要在访问手机中的通讯录,参考了一些文章,希望给大家带来帮助。1.引入两个通讯录相关框架#import #import 2.可以进入通讯录操作,要实现 ABPeoplePickerNavigationControllerDelegate协议转载 2015-04-24 21:56:48 · 557 阅读 · 0 评论