Major 64-Bit Changes
数据类型的变化 在C和Objective-C语言里,每个平台(编译器)都自己定义了内建数据类型的一些内存属性(大小,对齐方式), 并没有一个统一的标准。这样做的好处是在于在语言标准的的严格定义下,每个平台可以让数值在操作系统和硬件下更好的适配。 iOS 64-bit 运行时也对很多内建数据类型的大小做了改变。在上层,很多 Cocoa Touch frameworks 使用的数据类型也做了改变...
数据类型的变化 在C和Objective-C语言里,每个平台(编译器)都自己定义了内建数据类型的一些内存属性(大小,对齐方式), 并没有一个统一的标准。这样做的好处是在于在语言标准的的严格定义下,每个平台可以让数值在操作系统和硬件下更好的适配。 iOS 64-bit 运行时也对很多内建数据类型的大小做了改变。在上层,很多 Cocoa Touch frameworks 使用的数据类型也做了改变...
随着桌面操作系统由32-bit到64-bit的过渡,64-bit的app的出现也在被OS的发展驱动着。现在,iOS的系统架构和桌面系统的架构也有很多相同的地方。从iOS7的A7处理器开始,我们就可以build支持64-bit处理器的app了。当app支持了64bit后在同样的机型上可以获取更高的性能 简介 apple 的A7处理器支持两个不同的指令集。一个是由apple早前处理器支持的32...
iOS特性在修饰的时候我们经常会和下面几个修饰符打交道 strong、retain、assign、unsafe_unretained、weak、nonatomic、atomic、copy 其中与内存有关的有strong、retain、assign、unsafe_unretained、weak,在使用过程中稍有不慎就会陷入内存泄露,搞清楚他们的作用很有必要 在描述之前我们需要补充说明一些概...
近期想打开大门学习下同行们的iOS开发,于是想到了可以针对一些有特色的应用进行逆向工程,然后着重学习下该应用的设计架构。 由于自己也是初学者,下来就把自己躺过的坑记录在这里方便后续查阅。 逆向工程需要的工具 dumpdecrypted dumpdecrypted是一个砸壳工具。因为appstore安装包apple会为应用加上一层壳,所以在逆向之前我们需要先对应用进行砸壳。官方对dum...
坐标系 坐标系在开发过程中常分为世界坐标系和屏幕坐标系 通常我们的坐标系采用右手型,下图展示了左手坐标系和右手坐标系的区别 左手坐标系,伸出左手用大拇指指向方向轴的方向,其余4个手指自然弯曲,则4指弯曲方向为角度变化的正方向 右手坐标系和左手坐标系对称,只需将左右换成右手即可 iOS采用的是左手坐标系 向量的变换 图像上每个点的位置可以看成一个向量n维向量,取决于图像...
由于最近要做iPhone6和iPhone6+的适配工作,所以难免会需要对设备型号进行判断,就借此机会总结下判断设备的方法 获取iOS设备信息 1.根据屏幕宽度大小进行判断 #define iPhone6 ([UIScreen instancesRespondToSelector:@selector( currentMode )] ? CGSizeEqualToSize(CGSiz...
iOS准确的测量系统执行时间:在iOS的开发过程中,经常会为了满足严苛的用户体验要求,需要对某些功能和模块的执行时间进行控制,那么问题来了,如何高效的检测代码的执行时间 涉及的API 先来认识几个API,他们被包含在 <mach/mach_time.h> 在使用前我们需要先 #import <mach/mach_time.h> 进入mach_time.h文件...
在项目接入cocoapods后,打包机器打包方面暴漏和很多问题。总会莫名其妙的发生错误,让大家手足无措。 这里我来总结下常见的一些问题的处理方案,方便大家在日后的项目测试中做到有的放矢。 1.找不到相应的库 找不到相应的库的问题,我碰到的有两个原因 1.打包机器没有添加framework对应的源(如何添加源,请继续往下看) 2.本地cocoapods的版本与打包机器上cocoapods的版...
这些代码,验证了实现组合的一个算法。较为高效。运作原理就是常说的用二进制标志位标示选取的数字。 代码部分应该已经实现了所需的各个子函数,但是这个只是demo,如需要使用,需要检测是否有完备性问题。 现在将代码贴在这里: #include using std::cout; using std::cin; using std::endl; #include using std::string;...
对于存在多个.m文件的程序,由于需要编译过程中是相互依赖的,并且再编译完成后需要连接方能产生可执行文件。所以我们可以按照如下方法实施: 例如,现在有文件Point.h Point.m main.m 我们可以写如下Makefile文件,然后make,完成编译和连接 建立GNUmakefile,在里边输入如下内容: include $(GNUSTEP_MAKEFILES)/common.mak...