摘要:
本文以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. 阅读全文
摘要:
为什么你的数组包含3个项目而不是5个?为什么你的游戏运行缓慢?这些都跟调试有关,调试是开发过程中必不可少的一部分。本文所列举了一些重要的调试功能(当然并不全面)可以帮你用更少的时间来解决bug问题。本文内容主要包括3个方面:使用console检查app状态进行日志记录,并熟练的驾驭NSLog使用对象的生命周期来跟踪内存的使用。使用Console检查app状态Xcode底部的小黑盒是我们调试时的好朋友,它可以输出日志信息、错误信息以及其他有用的东西来帮你跟踪错误,除了可以看到日志直接输出的信息外,我们编程过程中也可以在某些断点停留,来检查app的多个方面。条件断点我假定你知道Breakpoint 阅读全文
摘要:
在开发iOS应用程序时,让程序具有良好的性能是非常关键的。这也是用户所期望的,如果你的程序运行迟钝或缓慢,会招致用户的差评。然而由于iOS设备的局限性,有时候要想获得良好的性能,是很困难的。在开发过程中,有许多事项需要记住,并且关于性能影响很容易就忘记。本文收集了25个关于可以提升程序性能的提示和技巧,把性能优化技巧分为3个不同的等级:初级、中级和高级初级在开发过程中,下面这些初级技巧需要时刻注意:1.使用ARC进行内存管理2.在适当的情况下使用reuseIdentifier3.尽可能将View设置为不透明(Opaque)4.避免臃肿的XIBs5.不要阻塞主线程6.让图片的大小跟UIImage 阅读全文
摘要:
看到一篇非常非常好的文章,让你瞬间理解委托是啥。在我们讲到协议的时候,申明的协议都是预留方法体,方法的的具体实现,等待使用协议的人去实现。要实现oc中的委托功能,其中重要的的一个成员,就是协议。网上有很多讨论关于委托的概念,有人说委托是c中的的回调函数,也有人说是java中的回调函数,也有人说委托就是代理。个人认为,给宇宙中的某个物体下定义和取名字,最好不要偏离他真实的本质,如果定义偏离本质太远,很容易误导观众。如果实在想不出一个贴切的名字去定义某个物体,那么我们可以不对某个物体下定义,我们可以直接说,“它是干什么用的”,这样既然明了,又简单。在此,我并不想讨论委托是什么,我也怕误导大家,因这 阅读全文
摘要:
先介绍几个关于Runtime System的概念: (1)isa指针:当一个对象被创建时,内存布局中的第一个元素是指向类结构的指针,即isa。通过isa指针,一个对象可以访问它的类结构,进而访问继承的类结构。 (2) SEL数据类型:它是编译器运行Objective-C里的方法的环境参数。 (3) IMP数据类型:它其实就是一个编译器内部实现时候的函数指针。当Objective-C编译器去处理实现一个方法的时候,就会指向一个IMP对象,这个对象是C语言表述的类型(事实上,在Objective-C的编译器处理的时候,基本上都是C语言的。KVC、KVO、KVB概念区别 通过名字看上去,这三... 阅读全文
摘要:
前言感谢您付出宝贵的才华与时间来开发iOS应用程程序。从职业与报酬的角度而言,这对于成千上万的开发员来说一直都是一项值得投入的事业。我们希望帮助您加 入这个成功的组织。这是我们首次发布《应用程序商店评估指导》(App Store Review Guidelines)。通过它,我们希望帮助您解决开发应用程序时遇到的问题,以便于您在提交应用程序时,可以加快审批流程的速度。我们将应用程序(Apps)视为与书籍或歌曲不同的产品,我们并不存储它们。如果您意欲批评宗教,那就去写本书。如果您想要描述*****过程, 写本书或写首歌曲,或者可以创建一个医疗程序。这会出现非常复杂的局面,但是我们决定,在应用程序 阅读全文
摘要:
一、准备工作: evasi0n的越狱方法和iOS 5.1.1的方法十分相似,都属于傻瓜级的越狱工具,用户只需要将一部升级到了iOS 6.0版本以上系统的iOS设备通过数据线连接电脑,然后打开下载好的evasi0n.exe程序(windows版的软件压缩包大小为9.77MB),那么软件就可以自动识别设备。接着点击软件界面中的Jailbreak按钮即可开始越狱操作,整个越狱过程的大部分时间软件中都有着醒目的提醒,Do not touch your device(不要碰你的设备),你只需要一步步等待即可。(提示,在升级到iOS6.0以及6.1系统后,用户最后重新恢复一下手机系统,这样可以避免因为备份 阅读全文
摘要:
技术的不断进化,使得软件开发也跟踪不仅进化,而且成熟了很多。一个不可否认的事实是,科技永远不能是静态的,因为它必须满足与之关联的人的需求。我所见过的软件世界,我必须承认,它是一个动态字段。就像我常说的,技术不断发展演变,有时真的让我们很难跟这个趋势保持同步。 作为一个码农,在码农的世界跟不上潮流是伤不起的。写代码心如止水,但是此时此刻你应该准迎接新的天翻地覆。根据最新的报道表明... 阅读全文
摘要:
一、越狱 1. 使用iTunes刷成最新的iOS6.0.1系统。 2. 使用redsn0w_win_0.9.13dev4进行不完美越狱,注意开始越狱前,需要通过“Extras=>Select IPSW”进行固件选择(注意,此时一定要选择:iOS6.0的估计,而不是iOS6.0.1的固件)。 3. 在主界面上,点击“jailbreak”开始越狱。接着红雪会自动加载,如果没有出现这... 阅读全文
摘要:
1、适配4英寸屏幕适配。 旧应用要与4英寸屏幕进行适配,需要创建一张Default-568h@2x.png图片,系统根据是否有此资源来识别是否支持4英寸屏幕。至于其他资源不允许使用xxx-568h.jpg此格式来适配屏幕,需要使用代码对屏幕进行检测来分别进行适配。 2、UINavigationViewController的变化 今天开发过程中发现的,该类的initWithRootViewController在之前的版本是最终会调用到init方法的。因此在继承UINavigationViewController时,直接在重写init方法来初始化对象所需属性即可。但是在iOS6上是不会调用in.. 阅读全文