当前位置: 首页 > 编程日记 > 正文

Objective-C 什么是类

Objective-C 什么是类

转自http://www.189works.com/article-31219-1.html

之前一直做C++开发,最近2个多月转 Objective-C, 入门的时候,遇到了很多的困惑。现在过节,正是解决他们的好时机。

主要参考来自http://www.sealiesoftware.com/blog/archive/2009/04/14/objc_explain_Classes_and_metaclasses.html

Objective-C 也是面向对象的语言,那么,首先需要知道的就是什么是class。

C++ 的class相对 Objective-C 中的class,就简单明了很多了。C++ 中class简单的说,就是一个大的struct, 绝大部分的class可以在编译时决定好class的布局(通过虚继承来的class成员变量只能动态确定)。当然,最关键的是,你不可能在运行时创建一个class,因为所有的class在运行之前已经确定下来,并保存在二进制文件中。

但是, Objective-C 确不同, Objective-C 可以在运行中创建class,修改class等等。那么,改如何定义 Objective-C 中的class呢。

在这之前,我们先看一个简单的,class的实例对象。

@interface Object 
{

//typedef struct objc_class *Class; 
    Class isa;    /* A pointer to the instance's class structure */ 
}

对象包含一个指向class的指针,而这也就意味着,任何包含class 的指针都可以被看做是对象(object)。

struct objc_class {            
    struct objc_class *isa;    //这里也有isa指针 
    struct objc_class *super_class;    //这里还有一个指向基类的指针 
    const char *name;        
    long version; 
    long info; 
    long instance_size; 
    struct objc_ivar_list *ivars;

struct objc_method_list **methodLists;

struct objc_cache *cache; 
     struct objc_protocol_list *protocols; 
};

显然,在 Objective-C 眼中,一切都是对象,甚至包括我们的class。而对象就是class的实例,那么,class是什么的实例呢,metaclass。

事实上,我们并没有解决问题。metaclass 事实上又是root metaclass 的实例,而root metaclass 自己又是 root metaclass 的实例,一图胜千言,不做赘述。

image

posted on 2012-05-14 11:24 linyawen 阅读(...) 评论(...) 编辑 收藏

转载于:https://www.cnblogs.com/linyawen/archive/2012/05/14/2499075.html

相关文章:

APP之红点提醒三个阶段

下面这个页面就是我们进入APP后的主界面。客户选项的红点上数字就是显示我们没有查看的客户总数量。 当我们切换到客户这个fragment时,会显示贷款客户数量与保险客户数量。 当我们随便点击入一个选项,假如进入到保险客户的这个activity里面,L…

零基础参加java培训的系统学习路线

​ 零基础想要学习java技术,那么最好的选择就是参加java培训,进行系统的学习,以下就是小编为大家整理的零基础参加java培训的系统学习路线,希望能够帮助到正在学习java技术的零基础同学。 零基础参加java培训的系统学习路线&#…

在ASP.NET中跟踪和恢复大文件下载

在Web应用程序中处理大文件下载的问题一直出了名的困难,因此对于大多数站点来说,如果用户的下载被中断了,它们只能说悲哀降临到用户的身上了。但是我们现在不必这样了,因为你可以使自己的ASP.NET应用程序有能力支持可恢复&#xf…

ZeroMQ实例-使用ZeroMQ进行windows与linux之间的通信

1、本文包括 1)在windows下使用ZMQ 2)在windows环境下与Linux环境下进行网络通信 2、在Linux下使用ZMQ 之前写过一篇如何在Linux环境下使用ZMQ的文章 《ZeroMQ实例-使用ZMQ(ZeroMQ)进行局域网内网络通信》,这里就不再赘述。 3、在Windows环境…

线性代数:03 向量空间 -- 基本概念

本讲义是自己上课所用幻灯片,里面没有详细的推导过程(笔者板书推导)只以大纲的方式来展示课上的内容,以方便大家下来复习。 本章主要介绍向量空间的知识,与前两章一样本章也可以通过研究解线性方程组的解把所有知识点…

如何获得PMP认证证书

​ pmp证书是一项由美国项目管理协会发起的项目管理专业人士认证证书,它属于国际认证类证书,含金量是非常高的,那么如何获得PMP认证证书呢?来看看下面的详细介绍。 如何获得PMP证书? PMP证书的获取是需要参加PMP考试的。我国自1999年引进PM…

UITextField的详细使用

UItextField通常用于外部数据输入,以实现人机交互。下面以一个简单的登陆界面来讲解UItextField的详细使用。//用来显示“用户名”的labelUILabel* label1 [[UILabelalloc] initWithFrame:CGRectMake(15, 65, 70, 30)];label1.backgroundCol…

06-hibernate注解-一对多单向外键关联

一对多单向外键 1,一方持有多方的集合,一个班级有多个学生(一对多)。 2,OneToMany(cascade{CascadeType.ALL}, fetchFetchType.LAZY )  //级联关系,抓取策略:懒加载。 JoinColumn(name"c…

线性代数:03 向量空间 -- 矩阵的零空间,列空间,线性方程组解的结构

本讲义是自己上课所用幻灯片,里面没有详细的推导过程(笔者板书推导)只以大纲的方式来展示课上的内容,以方便大家下来复习。 本章主要介绍向量空间的知识,与前两章一样本章也可以通过研究解线性方程组的解把所有知识点…

学Python培训有什么用

​ Python在近几年的发展非常迅速,在互联网行业Python的薪资也越来越高,不少人开始准备学习Python技术,那么到底学Python培训有什么用呢?来看看下面的详细介绍。 学Python培训有什么用? 学习python可以提高工作效率,使用python&…

SQL压力测试用的语句和相关计数器

将数据库中所有表的所有的内容选一遍: IF object_id(tempdb..#temp) is not null BEGIN DROP TABLE #temp END DECLARE index int DECLARE count int DECLARE schemaname varchar(50) DECLARE tablename varchar(50) set index1 set count(select count(*) from s…

线性代数:04 特征值与特征向量 -- 特征值与特征向量

本讲义是自己上课所用幻灯片,里面没有详细的推导过程(笔者板书推导)只以大纲的方式来展示课上的内容,以方便大家下来复习。 本章主要介绍特征值与特征向量的知识,前一章我们介绍了线性变换可以把一个向量映射到另一个…

使用Silverlight2的WebClient下载远程图片

在Silverlight 2之前有一个Downloader对象,开发者一般使用Downloader下载图片和文体文件,这个对象在Silverlight 2中作为了一个特性被集成到WebClient类之中,你可以直接使用WebClient的OpenReadAsync方法加载远程图片的URI,然后使…

学习Web前端需要避免哪些错误

很多初学web前端的同学,在学习web前端的时候都会遇到一些错误,虽然有些错误与某一个具体的行为相关,但有些错误却是所有Web开发人员都需要面对的挑战。下面小编就整理一下学习Web前端需要避免哪些错误,希望能够给同学们带来帮助。…

【2012百度之星/资格赛】H:用户请求中的品牌 [后缀数组]

时间限制:1000ms内存限制:65536kB描述馅饼同学是一个在百度工作,做用户请求(query)分析的同学,他在用户请求中经常会遇到一些很奇葩的词汇。在比方说“johnsonjohnson”、“duckduck”,这些词汇虽然看起来是一些词汇的…

实战:使用Telnet排除网络故障

使用Telnet排除网络故障 如果员工告诉你,他的计算机不能访问网站。你需要断定是他的计算机系统出了问题还是IE浏览器中了恶意插件,或者是网络层面的问题。 如图2-108所示,通过Telnet 服务器的某个端口,就能断定是否访问该服务器的…

线性代数:04 特征值与特征向量 -- 矩阵的相似对角化

本讲义是自己上课所用幻灯片,里面没有详细的推导过程(笔者板书推导)只以大纲的方式来展示课上的内容,以方便大家下来复习。 本章主要介绍特征值与特征向量的知识,前一章我们介绍了线性变换可以把一个向量映射到另一个…

UI设计培训完之后可以去哪些公司工作

UI设计培训完之后可以去哪些公司工作?这是目前很多学习UI设计或者准备学习UI设计的同学比较关注的一个问题,虽然都知道UI设计的发展前景不错,但是具体学完之后该去哪里工作大家却比较迷茫,来看看下面的详细介绍吧。 UI设计培训完之后可以去哪…

Tomcat详解(下)

配置监听端口 1、编辑配置文件 1234[rootplinuxos ~]# vim /usr/local/tomcat/conf/server.xml <Connector port"80" protocol"HTTP/1.1" ##改成80端口 connectionTimeout"20000" redirectPort"8443" /> 2、重启服务 123456…

线性代数:05 实对称矩阵与二次型

本讲义是自己上课所用幻灯片&#xff0c;里面没有详细的推导过程&#xff08;笔者板书推导&#xff09;只以大纲的方式来展示课上的内容&#xff0c;以方便大家下来复习。 本章是特征值与特征向量知识的延续&#xff0c;根据谱定理可知实对称矩阵可以正交对角化&#xff0c;对…

HDU 2717 Catch That Cow(BFS)

题目链接 好裸&#xff0c;BFS。杭电多组。。2A。。 1 #include <stdio.h>2 #include <string.h>3 int p[100001],o[100001];4 int main()5 {6 int n,k,i,j,start0,end0,num0;7 while(scanf("%d%d",&n,&k)!EOF)8 {9 memset(…

参加web前端培训需要注意什么

web前端在互联网行业的就业形势是非常良好的&#xff0c;是很多人进入到互联网行业的一个首要选择&#xff0c;要想学会web前端技术&#xff0c;一定要参加系统的培训&#xff0c;那么参加web前端培训需要注意什么呢? 参加web前端培训需要注意什么? 一、选择一家靠谱的培训机…

NIO - Scatter/Gather

1.Scatter 从一个Channel读取的信息分散到N个缓冲区中(Buufer). 2.Gather 将N个Buffer里面内容按照顺序发送到一个Channel. Scatter/Gather功能是通道(Channel)提供的 并不是Buffer, Scatter/Gather相关接口 类图 ReadableByteChannel WritableByteChannel 接口提供…

android:themes.xml

按 CtrlC 复制代码按 CtrlC 复制代码本文转自 OldHawk 博客园博客&#xff0c;原文链接&#xff1a;http://www.cnblogs.com/taobataoma/p/3761520.html&#xff0c;如需转载请自行联系原作者

参考答案:01 线性方程组

本篇图文为《线性代数及其应用》这本教材对应习题册的参考答案。 从本章开始&#xff0c;我们一起来学习线性代数的有关知识&#xff0c;线性代数的应用之一就是求解复杂方程问题。所以&#xff0c;我们首先从高中时期利用高斯消元法求解线性方程组谈起&#xff0c;发现可以利…

Java培训都学什么

java行业的快速发展&#xff0c;引起了很多人的关注&#xff0c;越来越多的人选择报java培训机构学习java技术&#xff0c;那么Java培训都学什么呢?零基础的同学是否能学会呢?来看看下面的详细介绍。 Java培训都学什么?主要分为以下几个阶段&#xff1a; 第一阶段&#xff1…

网站架构之统一数据服务平台技术

一、论坛背景 新一代网站架构的使命&#xff0c;敏捷&#xff0c;开发&#xff0c;体验。 敏捷&#xff1a;业务快速增长,每天都要上线大量的小需求,应用系统日益膨胀,耦合恶化&#xff0c;架构越来越复杂,带来更高的开发成本。如何保持业务开发敏捷性? 开放&#xff1a;Faceb…

Oracle 变量绑定与变量窥视合集系列二

二 用示例演示一次硬分析&#xff08;hard parse)和一次软分析&#xff08;soft parse&#xff09;&#xff0c;以及一次更软的分析&#xff08;softer soft parse)&#xff0c;并对给出演示结果 我们先看一个硬解析和软解析关系测试&#xff0c;什么时候硬解析&#xff0c;什么…

参考答案:02 矩阵及其运算

本篇图文为《线性代数及其应用》这本教材对应习题册的参考答案。 本章主要介绍有关矩阵的知识&#xff0c;主要包括矩阵的基本运算&#xff08;加法、数乘、乘法、乘幂、迹、转置&#xff09;&#xff0c;其中乘法最为重要&#xff0c;在计算机图形学中具有大量的应用。如果矩…

web前端培训:本期教程CSS 三大特性

CSS 有三个非常重要的三个特性&#xff1a;层叠性、继承性、优先级&#xff1a; 1. 层叠性 相同选择器给设置相同的样式&#xff0c;此时一个样式就会覆盖(层叠)另一个冲突的样式。层叠性主要解决样式冲突的问题。 层叠性原则&#xff1a; 样式冲突&#xff0c;遵循的原则是就近…