objc_msgSend 作用】的更多相关文章

C 的函数调用方式 C 语言使用静态绑定,即在编译器就可以决定运行时所应调用的函数. 编译器在编译代码的时候就已经知道程序中有相应的函数,并直接生成调用函数的指令.函数地址硬编码在指令之中. OC 中函数调用 OC 中在对象上调用方法,称为"消息传递".如下: id returnValue = [someObject messageName:parameter] 编译器看到这个之后,转化为标准的 C 语言函数调用, void objc_msgSend(id self, SEL cmd,…
1.Objective-C 起源: 在 C 语言基础上添加了面向对象特性,是 C 语言的超集.Objective-C 由 SmallTalk 语言演变过来,使用消息结构,运行环境由运行环境决定. OC 对象所占内存总是分配在堆空间,绝不会在栈空间分配内存.不含 * 的变量,保存的不是OC对象,可能使用栈空间. 2.在类的头文件中,应尽量少引用其他头文件: 在编译一个使用其他类的头文件(.h文件)时,如果不需要知道那个类的实现细节,可以使用 @class ***; 即可.在实现文件中(.m),需要…
本文主要是摘录了 <Effective Objective-C 2.0>一书中提到的编写高质量iOS 代码的几个方法. 1 熟悉Objective -C 1.1 OC 起源 OC 为C语言增加了面对对象的特性,是 C 的超集,并且使用动态绑定的消息结构: 1.2 在类的头文件中尽量少引入其他头文件 将引入头文件的时机尽量延后,只在确有需要时才引入,这样就可以减少类的使用者所需要引入的头文件的数量: 除非确有必要,否则不要引入头文件,一般来说,应在某个类的头文件中使用向前声明来提及别的类,并在实…
消息由接受者.选择子及参数构成.给某对象“发送消息” (invoke a message) 也就相当于在该对象上“调用方法”(call a method) 发给某对象的全部信息都要由“动态消息派发系统”(dynamic message dispatch system)来处理,该系统会查出对应的方法,并执行其代码. 在对象上调用方法,也可以叫做“传递消息” 消息:name 或 selector         可以接受参数,而且还有返回值 OC是C的超集,C 语言使用“静态绑定”(static b…
C语言使用“静态绑定”,也就是说,在编译期就能决定运行时所应调用的函数(也就是说函数地址硬编码在指令之中). 如果是内联函数,就无法硬编码在指令之中,而是要在运行期读取出来(也就是动态绑定). 在底层,所有方法都是普通的C函数. OC对象的每个方法都可以视为简单的C函数. <return_type> Class_selector(id self, SEL _cmd, parameter.....); 动态绑定由编译器转换成一条C语言函数,所调用的函数乃是消息传递机制中的核心函数,叫做objc_…
在分析objc_msgSend之前,先来搞清楚另一个问题. 函数是什么?可能会答 void foo(void) {} 像这样就是一个函数.或者函数包括函数原型和函数定义,是一段执行某样功能的机器代码. 调用函数时必须要准备两个要素,函数原型和函数入口地址. 函数原型的作用是什么?答声明了函数调用的方式.不够具体.函数原型是函数调用方和函数定义之间的关于参数传递和结果返回的协议约定.这个协议分别作用在函数入口两边的代码,一边是调用方在调用处协议的构建,另一边是函数定义对协议的访问解释.传统地就是调…
if __name__== "__main__" 的意思(作用)python代码复用 转自:大步's Blog  http://www.dabu.info/if-__-name__-__main__-mean-function-python-code-reuse.html 有人在学习python脚本时会发现有的脚本下面有几行代码;   1 2 if __name__== "__main__": main() 不明白其中的意思,其实这就是方便我们代码复用的,我们可以在…
linux下的文件结构,看看每个文件夹都是干吗用的/bin 二进制可执行命令 /dev 设备特殊文件 /etc 系统管理和配置文件 /etc/rc.d 启动的配置文件和脚本 /home 用户主目录的基点,比如用户user的主目录就是/home/user,可以用~user表示 /lib 标准程序设计库,又叫动态链接共享库,作用类似windows里的.dll文件 /sbin 系统管理命令,这里存放的是系统管理员使用的管理程序 /tmp 公用的临时文件存储点 /root 系统管理员的主目录(呵呵,特权…
[转自:http://www.jianshu.com/p/6c366b53ea41] 在每个 github 项目的右上角,都有三个按钮,分别是 watch.star.fork,但是有些刚开始使用 github 的同学,可能对这三个按钮的使用却不怎么了解,包括一开始使用 github 的我也是如此,这篇博客,结合自己的理解和使用,说说这三个按钮的用法以及一些个人见解. 如下图所示这是我们经常看到的三个按钮.   从左至右,依次是 watch star fork,下面分别说下他们的具体作用. wat…
今天尝试使用struts2+ urlrewrite+sitemesh部署项目,结果发现welcome-file-list中定义的欢迎页不起作用: <welcome-file-list> <welcome-file>/index.jsp</welcome-file> </welcome-file-list> 启动服务器后,直接输入http://localhost:8080/project 终是报404错误,初步猜测是由于没有找到index.jsp这个文件造成的…