objc新老runtime接口类型对比
    
            
摘要:【objc新老runtime接口类型对比】 1、objc_class->class_t. objc_class,此类型仍有,在OBJC2中,此类型的保留只是为了与OBJC1兼容。 上图看到,在OBJC2中,objc_class只有一个成员变量,isa。此变量存在的意义只是为了与OBJC1兼容。 class接口类型在OBJC2中变成了class_t,在runtime处理时,将objc_class*(即Class)强转成class_t*。 2、objc_method -> method_t。 && objc_method_list -> method_lsit_t
        
阅读全文
摘要:【build objc4 runtime】 1、Get the latest objc4 project codes from www.opensource.apple.com. 2、Open the projetct, compile it, you will get compile error. 3、you need some file to complete the compilation. 1) Create Directory: /tmp/objc.dst/usr/include 2) from libauto project, get auto_zone.h. Put it i..
        
阅读全文
摘要:【字节对齐实现】 给定某大小,按4字节对齐,或按8字节对齐,咋实现?看下面objc runtime中的实现 上文中WORD_MASK根据环境可以设置为4或8。
        
阅读全文
摘要:【Mac之SenTestingKit中的设计模式】 1、模板模式。 SenTest、SenTestRun分别提供了基类方法,让各自的子类(SenTestCase、SenTestRun)去实现。此为模板模式。 2、组合模式。 SenTestCase、SenTestSuit继承于SenTest,而SenTestSuit内含SenTest指针list。此为组合模式。组合模式提供多级目录式的牛X功能。 3、策略模式。 SenTest中饮食一个SenTestRun指针,可以用于指向不同类型的SenTestRun子类。此为策略模式。 4、桥模式。 SenTest作为基类,提供统一接口,让子类实现,...
        
阅读全文
摘要:【OC之respondsToSelector】 1、instancesRespondToSelector是类方法,用于判断此类实例是否能处理某个方法(包括基类方法)。 2、respondsToSelector是实例方法也是类方法,用于判断某个类/实例是否能处理某个方法(包括基类方法)。 3、下面是objc-runtime源码,可以看到这3个方法最终都调用class_respondsToSelector来实现功能,而class_respondsToSelector从父类中去寻找是否有对应的方法。 2个respondsToSelector方法类似,均是先取出isa指针,然后在isa指向的...
        
阅读全文
摘要:【OC之new】 1、OC提供了alloc和new两个类方法,new方法实质上等于 [[xxx alloc] init]。 alloc方法会自动将分配内存设置为0。
        
阅读全文
摘要:【Mac之Darwin】 1、The kernel, along with other core parts of OS X are collectively referred to asDarwin.。 Mac OS X的kernel,以及其它几个核心组件,也被统称为Darwin。Darwin是2000年苹果开源的一个类Unix操作系统。So,意即,Mac OS X构建于Darwin技术之上。 Darwin does not include Apple’s proprietary graphics or applications layers, such as Quartz, Qu...
        
阅读全文
摘要:【OC之OBJC2_UNAVAILABLE】 1、What isOBJC2_UNAVAILABLE macro mean? 意即在OBJC2.0中,这些东西将被删除。
        
阅读全文
摘要:【OC之initialize】 1、+ (void)initialize方法在调用每个类的第一个方法前(类方法,意味着以+打头的方法),会调用此函数。So,如果BaseClass继承了DerivedClass,那么initialize会被调用2次。 更详细资料参考:http://www.cocoachina.com/macdev/objc/2009/0611/158.html# 2、如何实现initialize方法:由于initialize会被多次调用,在执行initialize时,如果想只为本类初始化,则需要使用[self class]进行类型判定。
        
阅读全文
摘要:【bundle之principal class】 In particular, every Cocoa loadable bundle contains aprincipal class. The code loading mechanism provided by the NSBundle class uses a bundle’s principal class as an entry point. Applications loading bundles can ask NSBundle to find the principal class and use the returnedC.
        
阅读全文
摘要:【iOS之Framework】 1、Aframeworkis a hierarchical directory that encapsulates a dynamic shared library and the resource files needed to support that library. framework,所包含的必然是一个dylib。 2、Accounts.framework实例: 可以看到,大多数framework都是一个dylib+headers。所以在osx/ios中,通常没有单独的dylib存在(一个没有给出导出符号的dylib,对大数用户来说都没用),每...
        
阅读全文
摘要:【js's for-in vs oc's for-in】 1、在OC中,for-in中的item代表array中的元素本身,即obj。例如: 2、在js中,for-in中的item代表key。即array[key] = value。所以js中使用for-in枚举的话,可能会产生意响不到值。例如: 对于JS,建议使用for(;;)来枚举array。
        
阅读全文
摘要:【iOS之Accessibility】 1、UIAccessibility协议用于让外界程序了解到自己身的执情情况。Accessibility是一个交互协议,基于查询<->应答,通知<->监听模型的协议。外部程序通过查询来获取APP应答,从而了解程序。另外通过监听来自APP的消息,来通知用户当前状态。 2、常用的协议与元素包括: 1)UIAccessibility, protocol,核心协议。 2)UIAccessibilityAction,protocol,添加行为的协议。 3) UIAccessibilityElement, class。 4)UIAccessib
        
阅读全文
摘要:【iOS之VoiceOver】 1、什么是VoiceOver? VoiceOver是苹果开发的为视觉障碍服人士务的应用。伴随UIAccessibility协议,开发者可以通过支持UIAccessibility来使用自己的APP支持为盲人服务。 2、开关:Settings > General > Accessibility > VoiceOver 3、高频操作: 1)通常操作 2)其它操作提示
        
阅读全文
摘要:【iOS之UIALogger日志系统】 1、UIALogger是AnimationJS中的日志类,内含8个函数。 2、上半部分函数是一个LOG块,LOG块由logStart发起,由logIssue、logFail或logPass结束。 3、下半部分四个函数用于在logStart块中输出日志。logDebug对应“debug”,logMessage对应“message”,logWarning对应“warning”,logError对应"logError"。 4、LOG块结果级别依次是 pass < warning < error。所以如果一个LOG中同时有这3种类
        
阅读全文
摘要:【iOS之AutomationJS】 1、BrowserJS中没有提供JS互相引用的机制,只能通过HTML元素<script>来互相引用。 2、NodeJS中提供了require机制来互相引用。 3、在iOS AutomationJS中,提供了#import 命令来实现互相引用。
        
阅读全文
摘要:【iOS新加速计事件】 1、iOS5.0以前,可以使用UIAcceleration来监听加速计事件。 2、Bug iOS5.0以后,UIAccelerometerDelegate已经被depreacated,如下: deprecated不是说不能说了,而是意味着在将来版本会删除,所以如果不想更新知识的话,就使用UIAccelerometer吧。更保险的方法是使用一个Timer来检查UIAcceleration,即不依赖于此Delegate回调。 3、针对iOS4.0以上版本,推荐使用CMMotionManager来监听加速计事件。涉及到下面几个方法: 4、其实,CMMotion...
        
阅读全文
摘要:【iOS之Export UIAutomation script】To export a script to a file on disk:Open a script in a trace document.Control-click in the content area to display the contextual menu, as shown inFigure 3-5. Attention: Command+S is used to save the whole template. Only use Ctrl+LeftClick will leads to save the js.
        
阅读全文
摘要:【linux之GCC&C++Runtime版本编译期检查】 1、官方开发文档如下: 2、But how to use this feature in real development? I don't know at present.
        
阅读全文
摘要:【linux之exit】 1、exit主要的函数相关函数有3个:exit、_exit、atexit。 2、进程终止方式: 3、atexit函数原型: 4、exit、_exit函数区别
        
阅读全文
摘要:【C++匿名对象】 C++也有匿名对象,只在当行代码有用,离开当行代码立马析构。 【mutable of C++】 mutalbe的中文意思是“可变的,易变的”,跟constant(即C++中的const)是反义词。 在C++中,mutable也是为了突破const的限制而设置的。被mutable修
        
阅读全文
摘要:【linux数据重定向&管道】 1、linux数据重定向。#将错误输出信息关闭掉[chengmo@centos5 shell]$ ls test.sh test1.sh 2>&-test.sh[chengmo@centos5 shell]$ ls test.sh test1.sh 2>/dev/nulltest.sh#&[n] 代表是已经存在的文件描述符,&1 代表输出 &2代表错误输出 &-代表关闭与它绑定的描述符#/dev/null 这个设备,是linux 中黑洞设备,什么信息只要输出给这个设备,都会给吃掉 参考:http://w
        
阅读全文
摘要:【Mac之Font管理】 1、常常需要确定当前系统到底有多少字体可用,OSX已经为我们开发了专门的应用来帮助管理字体。 LaunchPad -> 其它 -> Font Book。 2、通过Font Book可以查看到系统当前有多少字体,以及查找到系统存放字体的路径。
        
阅读全文
摘要:【什么是dmg?】 .dmg是Mac机用的一种文件格式。 dmg就是disk image的意思,即磁盘影像,相当于在windows上常见的iso文件。 假如你在网上下载了一个dmg文件,双击它,你就会发现系统多了一个磁盘。这个磁盘就是刚才双击的dmg文件所包含的内容。 同时,用户可以在程序-常用工具-磁盘工具里面创建,大小自己定义的dmg文件,用来放程序,文件打包,或用来做一个限定容量的路径。然后你可以对这个磁盘做你要做的事情,如用TOAST刻录。因此说,dmg文件在Mac中又相当于一个软U盘。 dmg文件是mac系统的安装文件,相当于win的setup.exe,win系统无法安装,该下ex.
        
阅读全文
摘要:【linux之atexit函数】 1、什么是atexit函数? 2、流程图 3、后注册的函数会被插入到前排,从而被先调用。
        
阅读全文
摘要:【linux之umask】 1、umask用于设置文件创屏蔽字,即被umask设置的值,在新建文件时,不允许存在。 2、9个存取位。
        
阅读全文
摘要:【linux之access函数】 1、access函数按实际用户ID、组ID来测试。原型如下: 2、mode参数如下: 3、Demo:
        
阅读全文
摘要:【linux之文件类型】 1、linux文件类型有7类: 1)普通文件。(regular file) 2)目录文件。(directory file) 3)字符特殊文件。(character special file) 4)块特殊文件。(block special file) 5)FIFO。 6)套接口。(socket) 7)符号连接。(symbolic link) 2、通过<sys/stat.h>中的宏可以判定某文件是哪个类型 3、例:
        
阅读全文
摘要:【linux之fcntl】 每个文件描述符都有一个close-on-exec标志。默认情况下,这个标志最后一位被设置为 0。这个标志符的具体作用在于当开辟其他进程调用exec()族函数时,在调用exec函数之前为exec族函数释放对应的文件描述符。 fcntl(fd, F_SETFD, 1) 此句将fd的close-on-exec 标志设置为1,开启此标志。那么当子进程调用execl函数时,是不能向fd内写入的,因为在调用execl函数之前系统已经讲子进程的此文件描述符关闭了。(attention:这里是子进程!)但是如果将 fcntl(fd, F_SETFD, 1)改为fcntl(fd,..
        
阅读全文
摘要:【linux之文件系统】 1、Linux磁盘分区和目录 每次安装系统的时候我们都会进行分区,Linux下磁盘分区和目录的关系如下: 1)任何一个分区都必须挂载到某个目录上。 2)目录是逻辑上的区分。分区是物理上的区分。 3)磁盘Linux分区都必须挂载到目录树中的某个具体的目录上才能进行读写操作。 4)根目录是所有Linux的文件和目录所在的地方,需要挂载上一个磁盘分区。 以下是我们可能存在的一种目录和分区关系: 2、文件类型 a)普通文件:C语言元代码、SHELL脚本、二进制的可执行文件等。分为纯文本和二进制。 b)目录文件:目录,存储文件的唯一地方。 c)链接文件...
        
阅读全文
摘要:【linux之dup&dup2】 参考:http://baodunqiao.blog.sohu.com/40220886.html 书籍:《Unix环境高级编程》- 第3章 - 12节
        
阅读全文
摘要:【linux之inode】 一、inode是什么?理解inode,要从文件储存说起。文件储存在硬盘上,硬盘的最小存储单位叫做"扇区"(Sector)。每个扇区储存512字节(相当于0.5KB)。操作系统读取硬盘的时候,不会一个个扇区地读取,这样效率太低,而是一次性连续读取多个扇区,即一次性读取一个"块"(block)。这种由多个扇区组成的"块",是文件存取的最小单位。"块"的大小,最常见的是4KB,即连续八个 sector组成一个 block。文件数据都储存在"块"中,那么很显然,我们还必须找到
        
阅读全文
摘要:【javascript之this】 1、如果作为Method使用,this指向调用它的对象。 2、如果作为Function使用,非严格模式下this指向全局变量,严格模式下为undefined。 3、如果作为Function调用,想访问外部函数的this值,需要将this保存在一个变量里,如下例: 
        
阅读全文
摘要:【javascript之property's attributes】 1、js中property有2种,Data Property、Accessor Property。 2、Data Property内容: 3、默认添加的Data Property三个属性都为TRUE。用Browser环境下,Var定义的属性,configurable为false,即无法被delete。 4、Accessor Property属性: 5、可以通过以下函数修改属性的属性。 6、通过以下函数获取属性的属性。
        
阅读全文
摘要:【javascript之属性状态控制Method】 参考:http://msdn.microsoft.com/zh-SG/library/ff806192
        
阅读全文
摘要:【javascript之Extensible】 1、Extensible决定一个对象是否能添加新属性。 2、判断某对象Extensible值: 3、把对象置为None Extensible: 4、After an object is made non-extensible, it cannot be made extensible。
        
阅读全文
摘要:【nodejs文件引用规则】 1、node优先加载核心模块,如http、net、stream等,如果用户自定义模块与node模块全名冲突,则会加载的是核心模块。 2、如果文件名以"/"、"./"、或"../"打头,则node直接去加载文件,如果没文件,则去加载dir。注意在查找文件的时候,如果失败,
        
阅读全文
摘要:进位计数制 生活中我们常用的是10进制,但在计算机中数据都是以2进制的形式保存的。因此,熟练掌握2进制的特点和运算是编写程序并不可少的前提。 一般来说,进位计数制包含三个要素: 进位规则:十进制为逢十进一,二进制为逢二进一等。 每一个数位上数码所具有的权:十进制数码各位的权是以10为底的幂,二进制数
        
阅读全文
摘要:【javascript之instanceof原理】 instanceof 检测一个对象A是不是另一个对象B的实例的原理是:查看对象B的prototype指向的对象是否在对象A的[[prototype]]链上。如果在,则返回true,如果不在则返回false。不过有一个特殊的情况,当对象B的prototype为null将会报错(类似于空指针异常)。 关于typeof,此关键字会返回如下值: 可以看到,对于typeof,该操作符只会返回object类型,在面向对象的设计中,这个信息不足以区分一个对象到底是哪个分类。而用instanceof,则可以判断A是否是B的子类。 参考:http:...
        
阅读全文
摘要:【javascript之__proto__&constructor】 constructor:对象构造器。 prototype:访问对象构造器的原型,只有函数才具有这个属性。 isPrototypeOf:如果对象 A 存在于 对象obj的原形链中,则 A.isPrototypeOf(obj)返回tr
        
阅读全文
摘要:【dirname&basename】dirname指令1、功能:从给定的包含绝对路径的文件名中去除文件名(非目录的部分),然后返回剩下的路径(目录的部分)basename指令1、功能:从给定的包含绝对路径的文件名中去除左边目录部分或者同时去除某个后缀的内容(目录的部分),然后返回剩下的部分(非目录的部分)
        
阅读全文
摘要:【javascript中Object使用review】 1、对于下图,创建一个对象并赋予初始属性值,初看与OC中字典很像,bug是有区别的。 OC中Dictionary的key必须是字符串OC对象,value必须是OC对象,So如果是OC,则需要写成下面这样: 而对于JSON,key必须是strin
        
阅读全文
摘要:【http之100-continue】 1、http 100-continue用于客户端在发送POST数据给服务器前,征询服务器情况,看服务器是否处理POST的数据,如果不处理,客户端则不上传POST数据,如果处理,则POST上传数据。在现实应用中,通过在POST大数据时,才会使用100-continue协议。 2、客户端策略。 1)如果客户端有POST数据要上传,可以考虑使用100-continue协议。加入头{"Expect":"100-continue"} 2)如果没有POST数据,不能使用100-continue协议,因为这会让服务端造成误解。 
        
阅读全文