Objective-C基础知识

//————————————OC的发展历程—————————————//

1980年,OC语言诞生。

1988年,OC语言库诞生。

1996年,OC语言成为苹果公司专用编程语言。

2004年,Mac OS X以“NS”为前缀(Mac OS X使用以UNIX为基础的操作系统)

2007年,苹果公司发布了OC2.0版本。

 

//————————————OC的特点—————————————//

兼容性:在OC的代码中可以有C++和C语句,它可以调用C的函数,也可以通过C++对象访问方法。

字符串:通常情况下,OC使用Foundation框架的NSString类型的字符串。

类:定义类是OC的基本功能,OC的类声明和实现包括两个部分:接口部分和实现部分。

属性:属性是OC2.0提出的概念,它是替代对成员变量访问的“读取方法(getter)”和“设定方法(setter)”的手段。

分类:可以通过分类扩展父类的功能。

 

//————————————OC的编程思想——面向对象编程—————————————//

1.面向对象的三个基本特征:封装、继承和多态。

封装就是把客观事物封装成抽象的类。

继承就是从一般到特殊的过程。

多态提供了同一个接口名称,通过覆盖和重载实现不同的功能。

 

**********************

接口文件和实现文件

1.OC是一个面向对象的语言,所以整个OC程序是由一些类组成的。每个OC类包含两大块代码,分别叫“接口”和“实现”。 

 

***********************

类和实例

1.就像现实世界中的对象一样,在面向对象编程的世界中,每一个对象都属于一个类型,这个类型称为类。类定义了现实世界中的一些事物的抽象特点。在OC中,定义一个类的一般格式如下:

 

@interface Member : NSObject

{

    NSString *name;

    int age;

}

 

- (NSString *)name;

- (int)age;

- (void)setName:(NSString *)input;

- (void)setAge:(int)input;

 

@end

 

2.每个类的实例就是一个对象,例如:member就是Member类的对象:

    Member *member = [[Member alloc]init];

  类是对象的模型,对象是类的一个实例。类是一种逻辑结构,而对象是真正存在的物理实体。

3.面向对象的分析过程大致分为:划分对象->抽象对象->将类组织成层次结构(通过继承来完成)。

4.面向对象的程序设计就是使用类和实例进行设计与实现程序。

5.UIButton *button = [[UIButton allocinit];

在数据类型的右边有一个星号,所有的OC对象变量都是指针类型的。

等号右边的语句是创建一个对象,这是一个嵌套的方法调用。第一个调用的是UIButton的alloc方法,这是一个相对比较底层的调用,因为该方法其实是为UIButton变量申请一个内存空间。第二个调用的是新创建对象的init方法,这个init方法是初始化变量值。

 

 

**********************

消息和方法

1.在面向对象中,直接发给对象的一个命令称为“消息”,而被调用的代码称为方法。给一个对象发送一个消息和调用一个对象的方法基本上同一回事。

2.方法的定义

    在OC中,一个方法是类的一部分。一个方法的声明格式为:

    +或者- (返回类型)方法名:(参数类型)参数名;

    它包含三个方面:

        它是一个类方法还是一个实例方法?

        它的参数和返回值

        方法的名字。

3.类方法和实例方法

    3.1。类方法和实例方法是通过方法定义的“+”或“-”来区分的。

    3.2.类方法一般用于两个目的:

        工厂方法:它是给类分配实例的方法。例如,UIFont类有一个类方法fontWithName:Size:。你提供一个名字和一个字体大小,这个UIFont类就返回一个UIFont实例。

        全局公用方法:一个类方法也可以是一个公用方法,这些公用方法可以被任何其他类来调用,而且不需要实例化。例如:UIFont类的familyNames方法返回机器上所安装的字体信息。

4.调用方法

    4.1.在OC中,对象的属性变量属于对象的内部数据,通常需要访问这些数据只能通过对象的方法来实现,方法是作用于属性的函数。

    4.2.在OC中,把“调用一个函数”称为“向一个对象发送一个消息”,或者称为”调用方法“。调用方法的简单格式是(假设没有输入参数):

        [实例 方法];

        或者是:[类名 方法];

    4.3.一个方法也可以返回值,可以把返回的值放在变量上保存,例如:变量=[实例 方法];

    4.4.在OC上,调用一个类或实例的方法,也称为给这个类或实例发消息。类或实例称为“接收方”。所以,调用方法的格式也可理解为:[接收方 消息];

    4.5.在术语上,整个表达式也叫做消息表达式。例如:

NSString *s2 = [s uppercaseString];//发送消息“uppercaseString”到s

    4.6.如果一个消息是一个带有参数的方法(即在调用一个方法时,可能需要提供输入参数),那么,每一个参数值跟在一个冒号后面。调用格式为:

[接收方 名字1:参数1 名字2:参数2 名字3:参数3 …];

在术语上,方法的名称是”名字1:名字2:名字3…”.

    4.7.OC允许在一个方法中调用中嵌套另一个方法,如:

 [NSString stringWithFormat:[test fromat]];

        但是尽量避免在一行代码里面嵌套调用两个方法。因为这样的话,代码的可读性不好。

    4.8.self类似于Java的this,使用self可以调用本类中的方法。

 

 

***************************

实例变量

1.实例变量属于一个对象。

2.从OC2.0开始,可以使用“.”来调用一个实例变量。如:aFraction.numerator。

 

**************************

创建实例的三种方法

1.间接创建实例

    如:NSString *s = [s2 uppercaseString];

2.直接创建实例

    发送一个alloc方法给一个类,从而直接创建这个类的实例。alloc类方法是在NSObject类上实现的,NSObject类是根类,其他类都从它这里继承。在执行alloc之后,系统就为一个实例分配内存。

3.通过nib文件创建和初始化实例

 

****************************

对象声明的语法:

类名 *var1, *var2,……….

但是要注意,这只是定义了一个指针变量,尚未为它所包含的数据获得内存空间。在调用alloc方法之后,这些对象才获得(分配)空间。例如:

Member *member;

member = [Member alloc];

在术语上,上述例子中的member称为Member对象,或者称为Member类的一个实例。另外,除了分配空间外,还需要调用init方法来给这个对象设置初值。

 

***************************

 

==:比较的是指针,而不是指向指针的内容。

self:这段代码中正在起作用的实例。

 

 

//——————————————————OC注释—————————————————//

1.属性注释

使用/**注释*/的文档注释格式。这种注释想较于//注释的优点是此属性可以在后面的引用时,在智能提示的下方显示中文注释。如图:

 

在之后的调用时可以看到如下效果:

 

并且之后在维护写完的代码时,把光标定位在该属性时可以在右侧的quickhelp中快速看到此属性的解释。

 

此外,(1)从实际的开发角度看并不是所有的属性都需要添加注释,只要是属性名能从英文直译或者简单明显的属性,不需要添加注释。

    (2)以下方式需要添加注释:

        (a).通过属性名无法快速且明显的了解该用途的属性必须会添加注释,如index到底是谁的index?

        (b).类似于状态的标记可能有0,1,2三种情况的要讲几种情况的注释一起写入。

        (c).属性名的英文直译无法说清时。

2.普通注释

行注释:“//”

3.方法集注释

内容分段:#pragma mark 

其实,其中的注释根本不用加,因为它都是英语组成的,通过阅读就可看懂它的意思。

在Xcode中,使用以下方式可以将OC源代码分割成不同的代码块。    

    #pragma mark - 注释内容 

4.代码块注释

    就是xcode中右下角代码段的使用

5.优先级注释

 

就是在代码后面添加://$$$$$,当然可以修改。

然后需要找他们的时候,只需要在项目搜索里敲上就能快速定位。

 

 

//——————————————————OC的文件扩展名—————————————————//

.h:头文件(也称为接口文件)。头文件包含类、类型、函数和常数的声明。

.m:源代码文件。可以包含oc和C代码。

.mm:源代码文件。带有这种扩展名的源代码文件,除了可以包含OC和C代码外,还可以包含C++代码。仅在你的OC代码中确实需要使用C++类或者特性的时候才有这种扩展名。

 

//——————————————————OC的导入文件—————————————————//

1.使用#import包含头文件

在C/C++中,为了防止头文件重复包含,我们经常需要用如下代码定义.h文件

    #ifndef _MYSOMETHING_H

    #define _MYSOMETHING_H

    。。。

    #endif

OC提供了一个预编译指令#import来简化#include的做法,使用#import,就不用在每个头文件里定义上面的3行条件编译语句。

当然,在OC中,还可以使用#include包含.h文件,但是,很显然,使用#import更方便。

 

2.导入文件

在.h文件中导入其他的类,使用@class指令。

在.m文件中导入其他的类,使用#import指令。

 


我的CSDN博客地址:http://blog.csdn.net/qw963895582/article 

posted @ 2015-05-24 15:07  天&泽  阅读(488)  评论(1编辑  收藏  举报