from http://blog.csdn.net/fww/article/details/
一、概述
Object-C是OS X和iOS上的主要程序开发语言。它是C语言的超集,提供了面向对象和动态运行时(多态)的功能。Object-C继承了C语言的语法、基本类型和流程控制语句,同时添加了定义类和方法的语法。当进行动态类型识别和绑定的时候,Object-C还添加了对象结构管理和对象语法的语言层面的支持,将很多工作延迟到了运行时进行处理。
二、类的声明与实现
Object-C类声明,一般在一个独立的头文件中进行,比如声明一个名称为yourClass的类的一般格式如下:
NSObject是Object-C中所有类的根类,也就是说,所有类要么从它派生,要么从它的子类派生。但你一次只能从一个类派生,因为Object-C是单继承的。
yourClass类的实现一般在yourClass.m文件中,其一般格式为:
#import,它类似C语言的#include。只不过,在Object-C中,它比#include更好用,它可以防止重复包含。也就说#inlcude依然可以使用,但#import更好。
三、属性
1、属性的声明与修饰
属性就是对象的数据。属性使用@property关键字声明。一般格式如下:
多个属性之间,可以使用逗号分隔:
属性通常还会加一些修饰,来控制数据的访问和存储等:
readonly与readwrite:
atomic与nonatomic:
strong与weak:
其中strong是默认的。strong表示该属性对其相应的对象是强引用。一个变量保持对一个对象的强引用,只要该变量在其作用域范围内或者直到它被赋给另一个对象或者nil为止。weak表示对属性对应的对象的弱引用。
copy、assign、retain:
copy修饰表示该属性将使用强引用,因为它必须保持它创建的新对象。
assign指定setter方法用简单的赋值,不更改索引计数(Reference Counting),一般对简单数据类型 使用assign。
2、属性的存取方法
一般情况下,一旦你使用@property声明了一个属性,编译器就会自动为该属性生成一对存取方法。编译器生成的存取方法遵守以下命名约定:
1)用来访问属性值的方法,getter方法,其名字与属性的名字是相同的;
2)用来设置属性值的方法,setter方法,其名字以“set”开始,其后是属性名,属性名首字母大写;
属性的修饰也会告诉编译器如何生成相关的存取方法,对于readonly属性,编译器会生成getter方法,但不会生成setter方法。
你也可以为存取方法取一个你自己想要的名字:
除了明确调用存取方法之外,OC还提供了点语法,来访问对象的属性:
点语法只是存取方法调用的一个便捷方式。当你使用点语法的时候,属性依然是通过getter或者setter方法来访问或者改变的。
点语法访问属性,同样要受到属性修饰的约束。
3、属性与实例变量
默认地,一个可读写的属性是基于一个实例变量的,这个实例变量也是编译器自动生成的。
尽管一个对象通过存取方法或者点语法访问自己的属性是最佳做法,但是它也可以在类实现中的,任何实例方法中,直接访问该属性对应的实例变量。下划线前缀清晰地表明你正在访问一个实例变量,而不是一个局部变量:
一般而言,你应该使用存取方法或者点语法来访问属性,即使你是在它自己的类实现中访问其属性,在这种情况下,你需要使用self:
self在object-c中代表当前实例。这个规则的例外会出现在当你写初始化、释放内存或自定义存取方法的时候。
四、对象与方法
1、方法
在Object-C中,有两种类型的方法,类方法和实例方法。
类方法以+开头,其基本形式如下:
类方法一般都是工厂方法,返回一个实例。
实例方法以-开头,其基本形式如下:
方法可以不带参数,也可以带一个或多个参数,也可以有返回值:
2、对象的创建与初始化
Object-C的对象的内存都是动态分配的,所以要使用指针来记录一个对象。
NSObject根类提供了一个类方法,alloc,用来为对象动态分配内存:
+ (id)alloc;
注意该方法的返回值是一个id类型,它表示指向一个对象的指针。alloc方法还有一个重要的任务,就是清理分配给对象属性的内存,通过将其置为0。也就是说会它会帮你初始化对象的属性。
与+ (id)alloc对应的就是- (void) dealloc,它用来释放对象的内存,自动引用计数ARC会自动调用该函数,而不用我们手动调用。
NSObject还提供了对象的初始化方法:
与- (id)init对应的是- (void) release,调用该函数会使得对象的引用计数-1,引用计数为0的话呢,ARC就会调用- (void) dealloc释放掉对象的内存。
3、消息
对象可以发送和接受消息,一个对象通过调用该对象的一个方法发送一个消息给另一个对象。这是object-C的说法,说白了就是函数调用。
对象发送消息的最常见形式如下:
对象可以给自己发送消息:
对象可以调用其父类实现的方法:
五、类扩展
类扩展一般在实现文件的最上部实现,用于扩展类的内部实现。
你可以在类扩展中声明一个属性:
在类扩展中声明的属性,编译器同样会为其生成相关的存取方法和实例变量。但是它只能在类的实现内部进行访问。
你也可以声明一个实例变量(不是属性的实例变量):
这个实例变量也只能在类的实现内部访问。
你还可以在类扩展中声明方法:
这个方法需要在类实现中进行实现,并且只能在类实现中进行调用。
综合起来,.m文件的基本格式如下:
一些需要注意的问题,有一些上面提到过,再过一遍吧:
1、程序的头文件和源文件的扩展名分别为.h 和.m;
2、注释:单行(//)和多行(/* … */);
3、Object_C 中的nil 相当于NULL。
4、Object_C 中的YES 和NO 相当于true 和false。
5、#import相当于#include ,导入头文件也有两种查找方式< … > 和" … ",但是#import 可自动防止同一个文件被导入多次。
6、Object_C中的所有类都必须继承自NSObject。
7、Object_C仅支持单一父类继承,不支持多重继承。
8、Object_C中所有对象都是指针的形式。
9、Object_C用self代替this。
10、Object_C使用id代替void*。
11、Object_C中用消息表示类的方法,并采用[aInstance method:argv]调用形式。
12、Object_C支持反射机制。
13、Object_C支持Dynamic Typing,Dynamic Binding和Dynamic Loading。
本篇知识点回顾:
1、了解OC语言的基本特性;
2、掌握类的声明、实现;
3、掌握属性的声明和修饰;
4、掌握对象的创建和方法的声明及实现。
到此这篇objection c_c语言怎么开发软件的文章就介绍到这了,更多相关内容请继续浏览下面的相关推荐文章,希望大家都能在编程的领域有一番成就!
版权声明:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若内容造成侵权、违法违规、事实不符,请将相关资料发送至xkadmin@xkablog.com进行投诉反馈,一经查实,立即处理!
转载请注明出处,原文链接:https://www.xkablog.com/goyykf/2102.html