
IPhone开发中级系列
文章平均质量分 96
望京最帅程序猿
在移动端开发方面有丰富的经验,擅长IOS,H5,React-Native等技术开发,Java后端开发也有涉猎。曾开发漫画岛,会计家园,畅捷服务,易代账,施工现场,项目BI,数字项目平台等App。曾经服务过App梦工厂,用友-畅捷通,目前就职于广联达。乐于分享,爱好开源,对技术有着强烈的追求。
展开
-
IOS开发之带格式的文本
有时可能会遇到这样的问题,一个label中设置的文本含有2种以上不同的格式,又不能把它拆解为两个label来显示,这时用NSMutableAttributedString可以很好的解决问题。示例如下:NSMutableAttributedString *text = [[NSMutableAttributedString alloc] initWithAttributedStr原创 2013-08-02 15:56:11 · 3341 阅读 · 0 评论 -
ios nil、NULL和NSNull 的使用
nil用来给对象赋值(Objective-C中的任何对象都属于id类型),NULL则给任何指针赋值,NULL和nil不能互换,nil用于类指针赋值(在Objective-C中类是一个对象,是类的meta-class的实例), 而NSNull则用于集合操作,虽然它们表示的都是空值,但使用的场合完全不同。示例如下:id object = nil; // 判断对象不为空 if原创 2013-05-27 18:19:54 · 57479 阅读 · 6 评论 -
IOS开发之带返回值的函数应不应加autorelease
在数据层,我们会常写类似下面的函数:我一开始是这样写的-(NSArray*) getBrandHonor:(NSString*) filePath{ NSArray * result = [NSArray new]; if ([self isFileExist:filePath]) { NSData * data = [NSData dataWit原创 2013-09-02 18:30:17 · 4114 阅读 · 2 评论 -
IOS开发之IOS生命周期
iOS应用程序的生命周期又根据系统是否支持多线程分为两种:不支持多线程的iOS4之前的系统以及支持多线程的iOS4及其之后的系统。iOS4 之前系统,app的生命周期图如下所示:从图中我们可以看出:step 1,点击 app icon 或者从应用程序url(比如在Safari地址栏中输入应用程序url)启动应用程序。step 2,就会原创 2013-09-05 22:08:07 · 2074 阅读 · 0 评论 -
OSX终端 命令行的一些基本操作
OSX终端 命令行的一些基本操作终端 命令行的一些基本操作很多朋友对osx下的命令行操作挠头,估计多数是在windows时代开始接触计算机的。有dos基础的应该是看看就明白,而玩过Linux的应该是轻车熟路了。这个贴子希望能给见到命令行就头大的兄弟一些帮助,所涉及到的命令基本限于安装kext,修改plist,更换核心所碰到的操作。如果想进一步了解Unix的命令,再网上找些关于Linux命令的文原创 2014-04-18 23:07:46 · 8717 阅读 · 0 评论 -
C++、Objective-C 混合编程
在XCODE中想使用C++代码,你需要把文件的扩展名从.m改成.mm,这样才会启动g++编译器。我们来看个测试代码:[java] view plaincopyclass TestC { private: NSString *str_;//C++类可以使用OC对象作为成员变量 public:原创 2014-04-26 01:42:13 · 1729 阅读 · 0 评论 -
cocoapods使用篇--多工程时怎么使用Pods
问题 1 一个项目中,主工程包含了pod子工程,其他静态类库工程,也想引用pod时,怎么办?目录结构如下:MainProjectPods.xcconfigPodsSubProject1Pods.xcconfig解决办法: 1 在子工程SubProject1下也建一个Pods.xcconfig,复制其内容,只修改PODS_ROOT = ../Mai原创 2014-05-20 10:20:25 · 5863 阅读 · 0 评论 -
页面跳转问题presentViewController
跳转页面的时候 我用的是 [self presentViewController:nLogin animated:NO completion:^{ }];,有A到B再到C,我现在再C页面返回的时候我想直接跳转到A页面 应该怎么做呢?在C中//关掉自己 [selfdismissViewControllerAn原创 2014-06-04 10:11:23 · 14277 阅读 · 1 评论 -
IOS中NSNotification使用笔记
1 基本用法添加观察(可能很多页面)[[NSNotificationCenterdefaultCenter] addObserver:selfselector:@selector(changeIntlCode:)name:NOTIFICATION_SUCCESS_SELECT_INTLCODEobject:nil];发出通知(可能只有一个页面)原创 2014-06-04 17:55:38 · 4707 阅读 · 0 评论 -
IOS开发之UIController生命周期
当一个视图控制器被创建,并在屏幕上显示的时候。 代码的执行顺序1、 alloc 创建对象,分配空间2、init (initWithNibName) 初始化对象,初始化数据3、loadView 从nib载入视图 ,通常这一步不需要去干涉。除非你没有使用xib文件创建视图原创 2013-09-05 22:10:11 · 4487 阅读 · 0 评论 -
IOS开发之关于NSTimer使用
看到这个标题,你可能会想NSTimer不就是计时器吗,谁不会用,不就是一个能够定时的完成任务的东西吗? 我想说你知道NSTimer会retain你添加调用方法的对象吗?你知道NSTimer是要加到runloop中才会起作用吗?你知道NSTimer会并不是准确的按照你指定的时间触发的吗?你知道NSTimer就算添加到runloop了也不一定会按照你想象中的那样执行吗? 如果上面提原创 2013-08-27 22:32:38 · 7137 阅读 · 0 评论 -
IOS开发之Block编程
IOS block 教程 这是网上一篇介绍的挺详细的教程。搜索过官方文档,蹩脚的英文面前看一点懂。速度很慢。后来找到上面这片大部分文档的翻译,觉得挺好的。对于block学习。大致分几点1.sdk的限制,即,block属于哪个版本新引入的特性。2.基本语法3.情景使用。一:block描述Block 是iOS在4.0之后新增的程式语法,严原创 2013-08-27 22:40:47 · 3245 阅读 · 1 评论 -
IOS开发之nsrunloop开发指南
1.NSRunLoop是消息机制的处理模式NSRunLoop的作用在于有事情做的时候使的当前NSRunLoop的线程工作,没有事情做让当前NSRunLoop的线程休眠原创 2013-08-13 12:00:01 · 3564 阅读 · 0 评论 -
IOS开发之tableview只选中一行
场景:一个弹出层,包含一个Tableview,每一行为一个选择条件,且只能选择一个。选中后文体有颜色变化,后面还会有对勾。选择另一个后,前一个恢复成普通状态。示例代码:- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {int newRow原创 2013-08-02 16:07:36 · 8471 阅读 · 8 评论 -
IOS开发-显示DatePicker当敲击textfield
最近做项目遇到一个问题,在一个设置页面有两个输入框,想让用户敲击时,弹出日期控件,选择日期时间。Baidu了一遍,发现没有一个完整的解决方案,现在解决了,分享一下。你可以用textfield的inputview和inputAccessoryView两个属性。创建datePicker,赋值给两个textfield的inputview属性。创建toolbar,包含一个Done按钮,赋值给input原创 2012-12-24 16:27:53 · 11498 阅读 · 15 评论 -
IOS开发之TableView替换默认的checkmark为自定义图像
I'd like to replace the default checkmark image that is shown when a UITableViewCell's accessory is set to: UITableViewCellAccessoryCheckmark.So I'd still like to write:[cell setAccessoryType:UITableViewCellAccessoryCheckmark];But I'd like my own imag原创 2013-08-02 16:12:21 · 4649 阅读 · 0 评论 -
IOS开发之内存管理self.prop=nil; vs. [prop release];prop=nil;
在OC中推荐用self.prop=nil;这样写有什么用呢?它等价于[xxx release]; xxx = [nil retain];(---如果你的property(nonatomic,retian)xxx,那么就会这样,如果不是,就对号入座吧)。 因为nil可以给它发送任何消息,而不会出错。为什么release掉了还要赋值为nil呢?大家用c的时候,都有这样的编码习惯原创 2013-08-02 18:07:43 · 2111 阅读 · 0 评论 -
IOS开发之property详解
之前很多网友对我翻译的教程中的Property的使用感到有些迷惑不解,搞不清楚什么时候要release,什么时候要self.xxx = nil;同时对于Objective-c的内存管理以及cocos2d的内存管理规则不够清楚。本文主要讲解objc里面@property,它是什么,它有什么用,atomic,nonatomic,readonly,readwrite,assign,retain,copy转载 2013-08-02 18:10:02 · 13245 阅读 · 2 评论 -
IOS开发之添加第三方lib或从其他工程引入lib时的链接错误:ld: symbol(s) not found for architecture i386
首先要确保正确的添加步骤1)拷贝到新project目录下2)添加到工程里3)在新工程的targets->Build Phases->target dependencies 点击+ 添加lib3) 在新工程的targets->Summary->Linked Frameworks and Libraries 点击+ 添加lib原创 2013-08-19 14:08:34 · 6279 阅读 · 0 评论 -
IOS开发之内存管理--dealloc该写些什么
在非ARC开发环境中,dealloc是类释放前,清理内存的最后机会。到底那些变量和属性该释放呢,一些特殊的类(nstimer,observer)该怎么释放。需要注意的是不释放会引起内存泄露,过度释放也会引起内存泄露。如何管理内存?原创 2013-08-20 15:41:49 · 12687 阅读 · 0 评论 -
IOS开发之NSPredicate 查询、搜索
简述:Cocoa框架中的NSPredicate用于查询,原理和用法都类似于SQL中的where,作用相当于数据库的过滤取。最常用到的函数+ (NSPredicate *)predicateWithFormat:(NSString *)predicateFormat, ...;1.比较运算符 > 、= 、例:@"number >= 99" 2.范围运算转载 2013-08-09 15:28:37 · 7592 阅读 · 0 评论 -
IOS开发之延迟执行---妙用篇
项目有这样的需求:一个包含GridView的页面,顶部有一个全选按钮,点击后Gridview中所有的Button全选,这时还有计算出这些Button所表示的实物的大小,并显示到底部Label。我的计算过程实在[tableview reloaddata]实现的,开始时我在调用[tableview reloaddata]之后,调用刷新底部区域的方法,结果,总是显示上一次刷新的结果。我猜[tablevi原创 2013-06-25 18:13:11 · 7059 阅读 · 2 评论 -
IOS之UITableView——如何刷新父页面的Cell
问题:评论数同步在社交相关的项目中经常有这样的主页面,主列表的Cell中有赞数,评论数,详情页顶部也是同样的一个Cell,下部有评论列表,评论增加或减少,详情页的评论数随之改变,返回主列表,主列表的对应的Cell中评论数却没改变。怎么同步呢。解决方案:详情页的Cell刷新时,发送通知,主列表监听通知,通知的回调方法只要执行tableview reloaddata即可原创 2014-08-12 22:31:34 · 3617 阅读 · 2 评论 -
iOS语音播放之切换听筒和扬声器的方法解决方案
[[UIDevice currentDevice] setProximityMonitoringEnabled:YES]; //建议在播放之前设置yes,播放结束设置NO,这个功能是开启红外感应//添加监听[[NSNotificationCenter defaultCenter] addObserver:self原创 2014-08-29 16:04:23 · 54934 阅读 · 3 评论 -
如何使用UIAutomation进行iOS 自动化测试(Part I)
写在前面研究iOS的自动化测试也有些日子了,刚开始的时候,一直苦于找不到什么好的资料,只能从Apple的官网查阅相关的API文档,只可惜,Apple对开发者来说实在是不怎么友好,文档写得相当的粗略,对于初学者来说有一定的难度。本来是打算自己动手写一篇关于iOS的UI自动化测试的入门级别的介绍性文档的,但想起来后面在具体解决一些问题的时候,收藏一篇很好的Blog,很全面地介绍了如何使转载 2015-11-15 07:37:23 · 1186 阅读 · 0 评论 -
APNS编程----iOS真机测试消息推送
一、准备工作1 拥有一台iOS为操作系统的苹果设备,iPhone,iPad,iPod都可以。2 拥有苹果开发者账号,需要真机调试,最好是是付费开发者,后面的步骤将会更顺利。3 需要一台PC做推送服务器,如果是台拥有MAC OS系统,将会更方便。二、了解大致步骤我们需要从测试的消息推动服务器,发送一条消息到Apple Push Notification Services,然后AP转载 2016-02-22 16:09:25 · 2698 阅读 · 0 评论 -
聊聊iPhone6 App分辨率适配的事
原文地址:http://shuma.taobao.zol.com.cn/view_257_4787256.html苹果直到iPhone6才开始推出真正的大屏手机,跟上时代潮流,除了乔布斯生前的严重抵制,软件分辨率适配无法统一也是苹果迟迟不肯动身的主要原因。封闭的iOS虽然避免了碎片化的风险,但是对于iPhone来说想要在每一代产品中保持变得异常困难,iPhone5第一次将屏幕升级到4.转载 2014-09-24 13:46:33 · 3390 阅读 · 0 评论 -
AppStore审核神速,大大提高了审核速度。
最近一段时间提交AppStore,审核速度快的惊人,以前要等5-7个工作日,现在最快只需一个晚上。用事实来说话这是最近的一个提交,前一天晚上6:07提交成功,第二天上午6:50上线,12个小时,半天时间。2016年五月初的一次提交,从提交到通过审核不到32个小时,一天半不到。以前android号称随时发版,现在android的上线速度要低于iOS,andro原创 2016-05-23 09:21:05 · 2610 阅读 · 1 评论 -
NavigationViewController的backBarButtonItem的设置技巧
之前大家是否疑惑为什么设置了类似这样的代码UIBarButtonItem *backButton = [[UIBarButtonItem alloc] initWithTitle:@"返回" style:UIBarButtonItemStylePlain原创 2016-10-20 11:17:39 · 1411 阅读 · 0 评论 -
IOS代码重构(一)目录结构调整
老项目经过几手之后,往往乱的不成样子,不整理实在是看着不清爽,开发维护也很困难。再次有几个建议:1 一个项目应该遵从一个代码架构。不能来个新人,或做个新功能就加一个新的开发架构。2 代码评审的重要性。在新人实习的三个月内,要对其详细讲解代码架构,使其理解,并对其提交的代码作评审,防止其另立门户,给后续代码维护买下隐患。如果有更好的建议,可以沟通之后,由系统架构师添加到项目中。有没有原创 2017-01-20 17:07:56 · 1254 阅读 · 0 评论 -
[iOS]NSString到底使用Copy还是使用Strong属性,有什么区别
其实一直以来,没有真正搞懂,他们两个的区别,只是概念上知道,strong是强引用,copy是复制一份,引用计数加1,使用上习惯 Property (nonatomic,copy) NSString * s1;为什么这样用,有时用strong程序也没出现问题,就真的不知道他们真正的区别在那,直到看到Wei_vv的这篇blog,分析,理解,写的测试代码,才真正搞明白。对于iOS老司机来说汗颜了转载 2017-03-18 11:24:12 · 3106 阅读 · 1 评论 -
iOS之Settings.Bundle
下图是在手机设置里点击钉钉APP后的页面:IMG_0663.PNGIMG_0664.PNG以上,大家肯定再熟悉不过了,那么它是如何实现的呢?没错,就是今天的主角:Settings.Bundle 。Settings.BundleSettings.Bundle支持六种配置项分别是:Title,MultiValue,Group,Slider原创 2017-03-23 17:21:22 · 1518 阅读 · 0 评论 -
iOS软键盘遮挡UITableView内文本框问题
1、注册[objc] view plain copyUIKeyboardDidShowNotification/UIKeyboardDidHideNotification通知。 -(id) initWithNibName:(NSString*)nibNameOrNil bundle:nibBundleOrNil {原创 2017-07-03 16:50:29 · 468 阅读 · 0 评论 -
iOS开发中的单元测试(一)&(二)
作者高嘉峻(微博:@gaosboy),SegmentFault.com联合创始人,杭州iOS开发者沙龙发起人,资深iOS开发者。iOS开发中的单元测试(一)导读:本文不讨论单元测试是什么,或者它之于一个工程的利弊,我认为单元测试是一个开发者保证产出代码质量的有效工具。本文从使用者的角度对比当下比较流行的两款单元测试框架,给大家提供一些选用建议。如果你还不甚了解单元测试在工程中所起到转载 2015-11-15 07:25:31 · 1262 阅读 · 0 评论 -
MRC下delegate野指针问题
近项目开发中,临时被调去修复一个页面返回时crash的问题。出现这个问题的原因也很巧合,正好服务地址在同事电脑上,也正巧网络请求响应时间狂慢!一个请求发出去回来的时间是40秒左右,要是在线上,肯定会让用户抓狂死! 当我打开项目的时候,点击页面返回时,发现网络请求依然在请求中,第一感觉就是内存管理上出错。在全局断点中定位到出问题的点上,竟然是delegate回调的地方出现了问题!i原创 2015-04-09 15:04:19 · 3456 阅读 · 0 评论 -
IOS通过NSCoding保存实体对象
在IOS的开发中,小数据量的持久化都用NSUserDefaults来实现,但是NSUserDefaults只能保存NSString, NSNumber, NSDate, NSArray, NSDictionary这些数据类型,但大多时候,我们会将一个对象实体做持久化的保存,由于不是大批量的数据,不会用到sqlite,那么这个时候NSUserDefaults会是很好的选择,其实对象类型可以通过NSC原创 2015-04-01 19:21:36 · 1281 阅读 · 0 评论 -
iOS摄像头和相册-UIImagePickerController-浅析
在一些应用中,我们需要用到iOS设备的摄像头进行拍照,视频。并且从相册中选取我们需要的图片或者视频。关于iOS摄像头和相册的应用,可以使用UIImagePickerController类来完成控制。关于UIImagePickerController的相关知识,如下:iOS的一些设备上都安装了摄像头。现在绝大多数都有了。在编程中,我们是用相应的东西来进原创 2014-08-29 16:21:03 · 12950 阅读 · 0 评论 -
iOS手势UIGestureRecognizer
UIGestureRecognizer是一个抽象类,定义了所有手势的基本行为,它有6个子类处理具体的手势:1.UITapGestureRecognizer (任意手指任意次数的点击)// 点击次数numberOfTapsRequired// 手指个数numberOfTouchesRequired [plain] v原创 2014-08-29 16:16:31 · 1747 阅读 · 0 评论 -
iOS6的旋屏控制技巧
在iOS5.1 和 之前的版本中, 我们通常利用 shouldAutorotateToInterfaceOrientation: 来单独控制某个UIViewController的旋屏方向支持,比如:- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrien原创 2014-09-05 08:44:20 · 1372 阅读 · 0 评论 -
IOS7 edgesForExtendedLayout
在iOS 7中,苹果引入了一个新的属性,叫做[UIViewController setEdgesForExtendedLayout:],它的默认值为UIRectEdgeAll。当你的容器是navigation controller时,默认的布局将从navigation bar的顶部开始。这就是为什么所有的UI元素都往上漂移了44pt。有时会加上顶部tool bar的高度 20, 20+44 = 6原创 2014-11-07 09:56:54 · 9983 阅读 · 0 评论