Effective Objective-C 2.0 — 第一条:了解Objective-C语言的起源
第一条: 了解Objective-C语言的起源
由Smalltalk演化而来,消息型语言的鼻祖(messaging structure)而非 (function calling)函数调用
//Messaging (Objective-C)
Object *obj = [objective new];
[obj performWith:parameter1 and:parameter2]; //Function calling (C++)
Object *obj = new Object;
obj->perform(parameter1, parameter2);
  区别:
      messaging structure:运行时所执行的代码由运行环境来决定。不管调用的函数是否多态,总在运行时才去查找所要执行的方法,编译器不关心接受消息的对象是何种类型,“动态绑定“
Function calling: 运行时所执行的代码由编译器决定
runtime component 运行期组件包含Objective-C的面向对象特性所需的全部数据结构及函数
NSString *someString = @"The string";
NSString *anotherString = someString;
someString 变量指向分配在堆里的某块内存其中含有一个NSString对象
对象所占内存总是分配在”堆空间“(heap space)中,而不再”栈“(stack)中

要点: OC是C的超集,OC使用动态绑定的消息结构,也就是说,在运行时才会检查对象类型。接受一条消息后,究竟应执行何种代码,由运行期环境而非编译器来决定
Effective Objective-C 2.0 — 第一条:了解Objective-C语言的起源的更多相关文章
- 第一条:了解Objective-C语言的起源
		
第一条:了解Objective-C语言的起源 Objective-C使用的消息结构而非函数调用. Objective-C的重要工作都由"运行组件(runtime component)&quo ...
 - 第1条:了解Objective-C 语言的起源
		
1.OC语言是由Smalltalk演化而来.该语言使用“消息结构” 而 非“函数调用”. 使用“消息结构”的语言,其运行时所执行的代码由运行环境来决定: 编译器不需要关心接收消息的对象是什么类型,只在 ...
 - 第一章 熟悉Objective -C   编写高质量iOS与OS  X代码的52 个有效方法
		
第一章 熟悉Objective -C 编写高质量iOS与OS X代码的52 个有效方法 第一条: 了解Objective-C 语言的起源 关键区别在于 :使用消息结构的语言,其运行时所应执行 ...
 - [Effective Java 读书笔记] 第二章 创建和销毁对象 第一条
		
第二章 创建和销毁对象 第一条 使用静态工厂方法替代构造器,原因: 静态工厂方法可以有不同的名字,也就是说,构造器只能通过参数的不同来区分不同的目的,静态工厂在名字上就能表达不同的目的 静态工厂方法 ...
 - jsp <c:forEach> 判断第一条 或 最后一条记录
		
<c:forEach>标签具有以下一些属性: var:迭代参数的名称.在迭代体中可以使用的变量的名称,用来表示每一个迭代变量.类型为String. items:要进行迭代的集合.对于它所支 ...
 - 自己动手写处理器之第四阶段(1)——第一条指令ori的实现
		
将陆续上传本人写的新书<自己动手写处理器>(尚未出版),今天是第11篇,我尽量每周四篇 第4章 第一条指令ori的实现 前面几章介绍了非常多预备知识,也描绘了即将要实现的OpenMIPS处 ...
 - sql 选取分组中的第一条,显示聚合以外的列,having字句的使用
		
分组中的第一条:select * from(select row_number() over(partition by 列1,列2,... order by 列1,列2,...) as rownum ...
 - linq中分组查询而且获取每个分组中的第一条记录,数据用于分页绑定
		
LINQ分组取出第一条数据 Person1: Id=1, Name="Test1" Person2: Id=1, Name="Test1" Person3: I ...
 - 电脑CPU开机上电后的第一条指令
		
结合上面的文章,CPU上电后第一条指令是通过CS:IP来指定的,CPU厂家会给其初始值,对于386处理器来说,CPU第一条指令地址是 0xFFFFFFF0 这里会有一个问题,CPU怎么能一上来就去0x ...
 
随机推荐
- jquery-jsrender使用
			
JsRender是一款基于jQuery的JavaScript模版引擎 特点: · 简单直观 · 功能强大 · 可扩展的 · 快如闪电 jsrender使用比较简单,本文简单结束一些常用的 使用过程 ...
 - js  客户端如何判断浏览器是否暗转Flash
			
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/ ...
 - lift and throw
			
import java.util.*; import java.math.*; public class Main { public static void main(String[] args) { ...
 - 【BZOJ-2007】海拔        最小割 (平面图转对偶图 + 最短路)
			
2007: [Noi2010]海拔 Time Limit: 20 Sec Memory Limit: 552 MBSubmit: 2095 Solved: 1002[Submit][Status] ...
 - 【BZOJ-3238】差异      后缀数组 + 单调栈
			
3238: [Ahoi2013]差异 Time Limit: 20 Sec Memory Limit: 512 MBSubmit: 1561 Solved: 734[Submit][Status] ...
 - xudyh的gcd模板
			
hdu 5019 #include <cstdlib> #include <cctype> #include <cstring> #include <cstd ...
 - sstream使用简介
			
sstream即字符串流.sstream有三种类:ostringstream:用于输出操作,istringstream:用于输入操作,stringstream:用于输入输出操作其实我感觉只用第三个就够 ...
 - Cloud Design Patterns Book Reading(undone)
			
目录 . the most common problem areas in cloud application development ) Availability ) Data Management ...
 - kickstart note
			
KickStart是一种无人职守安装方式 PXE + kickstart + DHCP + TFTP 1.挂载光盘 mount /dev/sr0 /mnt/iso cp -rf /mnt/iso/* ...
 - Codeforces  Intel Code Challenge Final Round (Div. 1 + Div. 2, Combined) B. Batch Sort(暴力)
			
传送门 Description You are given a table consisting of n rows and m columns. Numbers in each row form a ...