随笔分类 -  iPhone开发

摘要:本文以dpkg为例进行演示关于setuid具体原理可查阅《Unix高级环境编程》“进程控制”章节关于“设置用户id和设置组id”的介绍1. 首先需要通过setuid(0),让程序获取临时的root权限,此处操作容易受各方面影响(如权限)导致调用失败2. 调用execl函数或system函数,执行dpkg3. 还原setuid,确保恢复原始的执行权限以上为代码编写方面的原则,以下几步为对可执行文件的权限设置4. 使用gcc -o test test.c编译生成test可执行文件5. 设置可执行文件权限,在设置前后可通过ls -l查看权限区别,此处可以在安装脚本中完成 sudo chown ro. 阅读全文
posted @ 2013-06-22 15:32 iPhone Dev 阅读(1776) 评论(0) 推荐(0) 编辑
摘要:在开发iOS应用程序时,让程序具有良好的性能是非常关键的。这也是用户所期望的,如果你的程序运行迟钝或缓慢,会招致用户的差评。然而由于iOS设备的局限性,有时候要想获得良好的性能,是很困难的。在开发过程中,有许多事项需要记住,并且关于性能影响很容易就忘记。本文收集了25个关于可以提升程序性能的提示和技巧,把性能优化技巧分为3个不同的等级:初级、中级和高级初级在开发过程中,下面这些初级技巧需要时刻注意:1.使用ARC进行内存管理2.在适当的情况下使用reuseIdentifier3.尽可能将View设置为不透明(Opaque)4.避免臃肿的XIBs5.不要阻塞主线程6.让图片的大小跟UIImage 阅读全文
posted @ 2013-05-23 15:50 iPhone Dev 阅读(497) 评论(0) 推荐(1) 编辑
摘要:看到一篇非常非常好的文章,让你瞬间理解委托是啥。在我们讲到协议的时候,申明的协议都是预留方法体,方法的的具体实现,等待使用协议的人去实现。要实现oc中的委托功能,其中重要的的一个成员,就是协议。网上有很多讨论关于委托的概念,有人说委托是c中的的回调函数,也有人说是java中的回调函数,也有人说委托就是代理。个人认为,给宇宙中的某个物体下定义和取名字,最好不要偏离他真实的本质,如果定义偏离本质太远,很容易误导观众。如果实在想不出一个贴切的名字去定义某个物体,那么我们可以不对某个物体下定义,我们可以直接说,“它是干什么用的”,这样既然明了,又简单。在此,我并不想讨论委托是什么,我也怕误导大家,因这 阅读全文
posted @ 2013-04-27 10:28 iPhone Dev 阅读(481) 评论(0) 推荐(0) 编辑
摘要:前言感谢您付出宝贵的才华与时间来开发iOS应用程程序。从职业与报酬的角度而言,这对于成千上万的开发员来说一直都是一项值得投入的事业。我们希望帮助您加 入这个成功的组织。这是我们首次发布《应用程序商店评估指导》(App Store Review Guidelines)。通过它,我们希望帮助您解决开发应用程序时遇到的问题,以便于您在提交应用程序时,可以加快审批流程的速度。我们将应用程序(Apps)视为与书籍或歌曲不同的产品,我们并不存储它们。如果您意欲批评宗教,那就去写本书。如果您想要描述*****过程, 写本书或写首歌曲,或者可以创建一个医疗程序。这会出现非常复杂的局面,但是我们决定,在应用程序 阅读全文
posted @ 2013-03-06 11:10 iPhone Dev 阅读(684) 评论(0) 推荐(0) 编辑
摘要:1、适配4英寸屏幕适配。 旧应用要与4英寸屏幕进行适配,需要创建一张Default-568h@2x.png图片,系统根据是否有此资源来识别是否支持4英寸屏幕。至于其他资源不允许使用xxx-568h.jpg此格式来适配屏幕,需要使用代码对屏幕进行检测来分别进行适配。 2、UINavigationViewController的变化 今天开发过程中发现的,该类的initWithRootViewController在之前的版本是最终会调用到init方法的。因此在继承UINavigationViewController时,直接在重写init方法来初始化对象所需属性即可。但是在iOS6上是不会调用in.. 阅读全文
posted @ 2012-12-24 20:02 iPhone Dev 阅读(1519) 评论(2) 推荐(1) 编辑
摘要:原文地址:http://blog.csdn.net/huifeidexin_1/article/details/7883984iOS中编码转化1.UTF-8转化 NSString *data = @"你好,北京!"; //转换成UTF-8 NSString *dataUTF8 = [datastringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]; NSLog(@"%@",dataUTF8); //UTF-8转GBK,将UTF8代码替换,官方解释如下。//Replaces all pe 阅读全文
posted @ 2012-11-29 22:26 iPhone Dev 阅读(13896) 评论(0) 推荐(0) 编辑
摘要:Objective-C语言中方法的传递有二种:①Selector ② Blocks,本文主要说一下Selector,关于Blocks会在后续总结一下。消息传递模型(Message Passing)是Objective-C语言的核心机制。在Objective-C中,没有方法调用这种说法,只有消息传递。在C++或Java中调用某个类的方法,在Objective-C中是给该类发送一个消息。在C++或Java里,类与类的行为方法之间的关系非常紧密,一个方法必定属于一个类,且于编译时就已经绑定在一起,所以你不可能调用一个类里没有的方法。而在Objective-C中就比较简单了,类和消息之间是松耦合的,方 阅读全文
posted @ 2012-11-22 08:56 iPhone Dev 阅读(305) 评论(0) 推荐(0) 编辑
摘要:在应用程序执行时,经常需要本地化保存一些重要的数据,这时就有可能需要创建一些目录。Objective-C提供了一个非常强大的创建目录的接口:- (BOOL)createDirectoryAtPath:(NSString *)path withIntermediateDirectories:(BOOL)createIntermediates attributes:(NSDictionary *)attributes error:(NSError **)error; 很多人使用这个接口时,往往将attributes参数设置为nil,这样虽然能够创建出目录,但是在一些特殊场景下(比如iP... 阅读全文
posted @ 2012-11-18 23:28 iPhone Dev 阅读(10114) 评论(0) 推荐(0) 编辑
摘要:block 是 Apple 在 GCC 4.2 中扩充的新语法特性,其目的是支持多核并行编程。我们可以将 dispatch_queue 与 block 结合起来使用,方便进行多线程编程。本文源代码下载:点击下载1,实验工程准备在 XCode 4.0 中,我们建立一个 Mac OS X Application 类型的 Command Line Tool,在 Type 里面我们选择 Foundation 就好,工程名字暂且为 StudyBlocks.默认生成的工程代码 main.m 内容如下:Code highlighting produced by Actipro CodeHighlighter 阅读全文
posted @ 2012-11-18 20:35 iPhone Dev 阅读(454) 评论(0) 推荐(0) 编辑
摘要:获得通讯录中联系人的所有属性获得通讯录中联系人的所有属性, 见如下代码: ABAddressBookRef addressBook = ABAddressBookCreate();CFArrayRef results = ABAddressBookCopyArrayOfAllPeople(addressBook);for(int i = 0; i < CFArrayGetCount(results); i++){ABRecordRef person = CFArrayGetValueAtIndex(results, i);//读取firstnameNSString *personName 阅读全文
posted @ 2012-11-17 17:30 iPhone Dev 阅读(283) 评论(0) 推荐(0) 编辑
摘要:NSAttributedString可以让我们使一个字符串显示的多样化,但是目前到iOS 5为止,好像对它支持的不是很好,因为显示起来不太方便(至少没有在OS X上方便)。首先导入CoreText.framework,并在需要使用的文件中导入:#import<CoreText/CoreText.h>创建一个NSMutableAttributedString:NSMutableAttributedString *attriString = [[[NSMutableAttributedString alloc] initWithString:@"this is test!&q 阅读全文
posted @ 2012-11-15 21:26 iPhone Dev 阅读(3345) 评论(0) 推荐(0) 编辑
摘要:为iPad和iPhone程序增加启动画面非常简单,基本思路就是增加启动图片资源Default.png即可,只是要根据不同的分辨率和旋转方向需要有不同的图片尺寸。目前的iOS设备主要有四种不同的分辨率:1 iPad 768×10242 New Pad 1536×20483 iPhone4 640×9604 iPhone 320×480如果一个程序,既要支持iPad又要支持iPhone,那么它需要包含下面几个图片:1 Default.png iPhone默认启动图片,如果没有提供上面几个iPad专用启动图片,则在iPad上运行时也使用Default.png( 阅读全文
posted @ 2012-10-24 12:58 iPhone Dev 阅读(3558) 评论(0) 推荐(0) 编辑
摘要:观察者模式 定义了对象之间的一种一对多的依赖关系,当一个对象(主题subject)改变状态时,它的所有依赖者(观察者observer)都会收到通知,并自动更新。 所谓一对多关系是指,主题是具有状态的对象,并可以控制状态,观察者使用状态,即使状态并不属于它们,许多观察者依赖主题来通知他们主题的状态何时或怎样改变了,从而产生一对多关系。 而依赖的产生是因为真正拥有数据的是主题... 阅读全文
posted @ 2012-08-29 11:35 iPhone Dev 阅读(939) 评论(0) 推荐(0) 编辑
摘要:在XCode中,我们经常会看到这些编译选项(如下图),有些人可能会有些茫然,本文将对GCC4.2、LLVM GCC 4.2、LLVM compliler 2.0三个编译选项进行一个详细的介绍。GCC GCC(GNU Compiler Collection,GNU编译器套装),是一套由 GNU 开发的编程语言编译器。它是一套以 GPL 及 LGPL 许可证所发行的自由软件,也是 GNU计划的关键部分,亦是自由的类Unix及苹果电脑 Mac OS X 操作系统的标准编译器。GNU编译器套装GCC 原名为 GNU C 语言编译器,因为它原本只能处理 C语言。GCC 很快地扩展,变得可处理 C++。. 阅读全文
posted @ 2012-08-29 11:18 iPhone Dev 阅读(17461) 评论(3) 推荐(2) 编辑
摘要:通讯录中联系人相关的应用iPhone提供了两个框架:AddressBook.framework和AddressBookUI.framework,使用这两个框架我们可以在程序中访问并显示iPhone数据库中的联系人信息。1.AddressBookUI显示部分AddressBookUI中提供了和联系人显示信息相关的一些Controller,有四个:ABPeoplePickerNavigationController:显示整个通讯录并可以选择一个联系人的信息ABPersonViewController:显示一个具体联系人的信息ABNewPersonViewController:增加一个新的联系人AB 阅读全文
posted @ 2012-07-31 10:18 iPhone Dev 阅读(1537) 评论(0) 推荐(2) 编辑
摘要:网上看到了一些总结,然后结合我们自己的上传经验,整理出各种理由如下(欢迎大家补充):图标1、用到苹果的标志。2、说我们的应用的设计和Apple的Logo风格太像了(都是圆角)。3、图标不能点击,不能点击的图标要置灰,或者直接隐藏。信息填写1、用了著名游戏的关键字,比如说“愤怒的小鸟”之类的。2、技术支持地址写的微博地址,于是被拒绝了。原因是:不能将需要登陆才能访问的网址作为技术支持地址。3、游戏里有实物奖励的话,一定要说清楚,奖励由本公司负责,和苹果没有关系。4、年龄设置太低,说是有成人内容,被拒,修改内容后上线。5、一个应用在线,但你想在发一个豪华版之类的,再开一个应用也会被拒绝。6、同.. 阅读全文
posted @ 2012-07-11 13:56 iPhone Dev 阅读(675) 评论(0) 推荐(0) 编辑
摘要:目前iOS平台上常见的安装包有三种:deb、ipa和pxl。deb格式 deb是Unix系 统(其实主要是Linux)下的安装包,基于tar包,因此本身会记录文件的权限(读/写/可执行)以及所有者/用户组。由于Unix类系统 对权限、所有者、组的严格要求,而deb格式安装包又经常会涉及到系统比较底层的操作,所以权限等的设置尤其重要。 deb包本身有三部分组成:(1)数据包,包含实际安装的程序数据,文件名为data.tar.XXX;(2)安装信息及控制脚本包,包含deb的安装说明,标识,脚本等,文件名为control.tar.gz;(3)最后一个是deb文件的一些二进制数据,包括文件头等... 阅读全文
posted @ 2012-07-11 11:26 iPhone Dev 阅读(1301) 评论(0) 推荐(0) 编辑
摘要:应用程序开发完进入测试阶段,通常需要在内部发布一些版本到测试者的机器上安装,该怎么做呢,本文将做详细的介绍。一、如果测试用户的机器已经越狱,那就简单了,直接打包成ipa,用户直接通过91助手、同步推、PP助手等工具安装。二、如果测试用户的机器没有越狱,下面有几种方案供选择: 1. 如果你的(IDP)iPhone Developer Account是$299企业版的,那就直接把ipa发给用户安装就可以了。注意:$299企业版的账号,开发的应用程序不能上传到AppStore,只能在企业内部发布、使用。 2. 以无线的方式安装应用程序 这个方法在苹果官方帮助网站上有介绍:http://he... 阅读全文
posted @ 2012-07-05 11:02 iPhone Dev 阅读(7363) 评论(1) 推荐(0) 编辑
摘要:一.白图标出现场景 1.越狱不成功,导致系统自带程序图标变白,CYDIA图标变白; 2.使用91安装程序,导致一个或几个图标变白; 3.程序冲突,导致进入安全模式,同时一个或几个图标变白; 4.其他原因变白,比如安装方法不正确,误删图标文件等。二. 白图标原因分析: 自从用Absinthe完美越狱之后,iPhone4S和iPad2用户一直遇到白图标的问题。为了解决这个问题,Absinthe也发布了更新,但仍有部分用户还是受到白图标的困扰,而且看起来受影响的程序大多为iPhone4S的原生应用,如电话程序、日历等等。重启系统可暂时解决白图标的问题。 白图标并不完全因Absint... 阅读全文
posted @ 2012-05-30 14:18 iPhone Dev 阅读(39169) 评论(0) 推荐(0) 编辑
摘要:图标是IOS程序包所必需的组成部分。如果你没有提供程序所需的各种尺寸的图标,程序上传发布时可能会无法通过验证。IOS程序为兼顾不同的应用场景,定义了多个不同规格的图标,并以不同的命名区分。(这时默认的命名,如果你在应用的配置文件中指定了icon文件名的话,不会使用这里的icon)。iPhone专用程序:图标名称大小圆角用途必需Icon.png57 X 5710px用于程序商店和在iPhone/iPod Touch中显示必需Icon@2x.png114 X 11420pxIcon.png的高清模式Icon-Small.png29 X 2920px用于设置和Spotlight搜索Icon-Smal 阅读全文
posted @ 2012-05-28 10:51 iPhone Dev 阅读(957) 评论(0) 推荐(0) 编辑