IOS开发-Objective-C面向对象编程基础知识

1)Objective-C的类定义包含两个部分,一是类接口的声明,二是类方法的实现。

2)所有的 Objective-C的所有编译指示都以@打头。

a)类接口以@interface开始以@end结束。

b)类的实现以@implementation开始以@end结束。

c)每个实现文件必须包含它自己对应的接口文件,这样实现文件中就可以安全的将 父类名删除,将类的instance变量声明删除,只关注类的方法的实现;可以这样做的原因是我们没有必要重复接口文件中同样的声明。

d)不要将源文件中的函数参数命名成与该类成员变量同名的变量,否则函数的参数名会覆盖类的成员变量,导致在该函数的实现中看不到类定义中的成员变量。

如在头文件中一个类接口声明如下:

@interface Circle:NSObject

{

ShapeRect bounds;

ShapeColor fillColor;

}

- (void) SetFillColor: (ShapeColor) fillColor;

- (void) SetBounds: (ShapeRect) bounds;

- (void) draw;

@end //Circle

我们源文件中类的实现如下:

@implementation Circle

- (void) SetFillColor: (ShapeColor)c

{

fillColor = c;

}

- (void) SetBounds: (ShapeRect)b

{

bounds = b;

}

- (void) draw

{

NSLog(@"drawing a circle at (%d,%d,%d,%d) in %@",bounds.x,bounds.y,bounds.width,bounds.hight,colorName(fillColor));

}

@end //circle

3)id 比较独特,在Objective-C中它是一种泛型,该类型的变量可以存储指向任何一个对象的指针。

4)向一个对象发送一个消息,那么该对象又是如何去执行该消息所对应的代码呢?

每个对象都包含一个指向其类的指针,而类也包含一个指针该指针指向该类的代码区域。

这样当对象收到一个消息,对象通过其包含的指向找到其所属的类对象,通过类对象的代码区指针又可以找到与消息对应的函数。

每个对象都包含一个名叫isa的指针,就是该指针指向类。

5)Objective-C中的基本术语:

:类是一种结构,它用于表示一个对象的类型。对象通过isa指针来引用类来获得与本身有关的所有信息,尤其是像4)中所说的如何执行每种操作的代码。

对象:也是一种结构,该结构主要包含成员变量的值和指向其类的隐藏指针(isa);同一类的所有象共享一份代码。

实例:是“对象”的另外一种称呼。

消息:是对象可以执行的操作,用于通知对象去做什么,一个对象能响应哪些消息可以从接口定义中知道。

方法:为响应消息而运行的代码。根据对象的类,消息可以调用不同的方法。

接口:是对对象的类应该提供的特性的描述。相当于是告诉其他使用该类的客户,该类的对象可以接收哪几个消息。与上面说的“消息”术语一致。

实现:是使接口正常工作的代码,也就是使对象消息正常工作的代码。与上面的“实现”术语一致。

6)有些方法名后有冒号,有些没有呢?如何判断什么时候有,什么时候没有?

如果方法使用参数,则需要冒号;否则不需要冒号。如上面的代码片断。

时间: 2024-10-13 01:13:21

IOS开发-Objective-C面向对象编程基础知识的相关文章

iOS开发网络篇—网络编程基础

iOS开发网络篇—网络编程基础 一.为什么要学习网络编程 1.简单说明 在移动互联网时代,移动应用的特征有: (1)几乎所有应用都需要用到网络,比如QQ.微博.网易新闻.优酷.百度地图 (2)只有通过网络跟外界进行数据交互.数据更新,应用才能保持新鲜.活力 (3)如果没有了网络,也就缺少了数据变化,无论外观多么华丽,终将变成一潭死水 移动网络应用 = 良好的UI + 良好的用户体验 + 实时更新的数据 新闻:网易新闻.新浪新闻.搜狐新闻.腾讯新闻 视频:优酷.百度视频.搜狐视频.爱奇艺视频 音乐

iOS开发系列--C语言之基础知识

概览 当前移动开发的趋势已经势不可挡,这个系列希望浅谈一下个人对IOS开发的一些见解,这个IOS系列计划从几个角度去说IOS开发: C语言 OC基础 IOS开发(iphone/ipad) Swift 这么看下去还有大量的内容需要持续补充,但是今天我们从最基础的C语言开始,C语言部分我将分成几个章节去说,今天我们简单看一下C的一些基础知识,更高级的内容我将放到后面的文章中. 今天基础知识分为以下几点内容(注意:循环.条件语句在此不再赘述): Hello World 运行过程 数据类型 运算符 常用

Object-C 1.0 第三章:面向对象编程基础知识(OOP)

1. 间接(indirection)        1.1 变量和间接(使用变量来代替一些数字)        1.2 使用文件名的间接                const  表示一个变量不允许被改变                    const int nValue: //nValue是const                    const char *pContent; //*pContent是const, pContent可变                    cons

编程基础知识——Java JNI开发流程(2)

android中使用jni调用本地C++库 android平台上的本地库文件后缀 .so.类似windows上的dll文件. 要在android上使用jni,首先需要下载android ndk. 操作步骤,正常建立android工程,然后在android工程那里右键,属性,选择Android Tools -> Add Native Support.就可以为android工程增加本地库支持. 添加支持后的android工程,会增加jni目录,C++代码就写在这个目录里. 新建一个类,并且使用nat

[.net 面向对象编程基础] (14) 重构

[.net 面向对象编程基础] (14) 重构 通过面向对象三大特性:封装.继承.多态的学习,可以说我们已经掌握了面向对象的核心.接下来的学习就是如何让我们的代码更优雅.更高效.更易读.更易维护.当然了,这也是从一个普通程序员到一个高级程序员的必由之路.就看病一样,普通医生只能治标,高级医生不但看好病,还能除病根. 1.什么时重构? 重构(Refactoring)就是在不改变软件现有功能的基础上,通过调整程序代码改善软件的质量.性能,使其程序的设计模式和架构更趋合理,提高软件的扩展性和维护性.

用Netty开发中间件:网络编程基础

用Netty开发中间件:网络编程基础 <Netty权威指南>在网上的评价不是非常高,尤其是第一版,第二版能稍好些?入手后高速翻看了大半本,不免还是想对<Netty权威指南(第二版)>吐槽一下: 前半本的代码排版太糟糕了,简直就是直接打印Word的版式似的. 源代码解析部分的条理性和代码排版好多了,感觉比其它部分的质量高多了. 假设你是刚開始学习的人可能会感觉非常具体,差点儿每部分都会来一套client和服务端的Demo.假设你不是入门者的话可能会感觉水分比較多. 最后一部分高级特性

JAVA学习(五):Java面向对象编程基础

Java面向对象编程基础 面向对象(Object oriented programming,OOP)技术是一种强有力的软件开发方法,它採用数据抽象与信息隐藏技术,来使软件开发简单化,以达到代码重用的目的. 1.OOP的3个特性(封装.继承和多态性) 封装是类的基础.指把类的相关实现细节隐藏起来,在类中将数据和实现操作的代码集中起来放在对象的内部.调用这些类时仅仅需直接使用类预留的接口就能够了. 继承提供了子类自己主动拥有父类数据结构和方法的机制.它表示类之间的一种关系. 多态指使一个对象被看成还

[.net 面向对象编程基础] (20) LINQ使用

[.net 面向对象编程基础] (20)  LINQ使用 通过上节LINQ的基础知识的学习,我们可以开始使用LINQ来进行内存数据的查询了,我们上节说了LINQ的定义为:Language Integrated Query(语言集成查询)的简称,它是集成在.NET编程语言中的一种特性. 1.LINQ的构架 从这幅图中,我们可以知道LINQ包括五个部分:LINQ to Objects.LINQ to XML.LINQ to SQL.LINQ to DataSet.LINQ to Entities.

编程基础知识——C++能不能支持Java和ObjC的反射?

C++能不能支持Java和ObjC的反射? 要回答这个问题,首先我们要清楚什么是反射.什么是反射? 教科书的解释我就不说了,(^o^)其实我也记不得.实际开发应用的反射就是在没有某个类型的头文件或者类结构定义的情况下,存取这个类型的对象的成员字段的值,调用这个对象的成员函数(方法). 比如我有定义了一个类型 Class  A,里面有 a,b,c三个字段,有fun()函数.现在我手里只有一个 void* pA,注意它的类型只是一个void指针,我手里也没有Class的头文件,我要怎么样得到,a,b