一:面向对象的思想
objective-c与C语言的编程思想不同,C语言是面向过程的编程,而objective-c则是面向对象的编程,所谓面向对象,我个人的理解,就是抽象、将具有一定共同点的实物抽象成一个个类,对其进行封装,继承,对实物本身进行操作。
二:Objective-C的历史
objective-c是以SmallTalk为基础,建立在C语言之上,并兼容c与c++的一门编程语言。20世纪80年代早期由 Brad J.Cox设计,2007年苹果公司发布了objective-c 2.0,并在iPhone上开始使用objective-c进行开发。
三:Objective-C框架
Objective-c编程中主要用到的框架是Cocoa,它是MacOS X中五大API之一,它由两个不同的框架组成FoundationKit 和ApplicationKit。Foundation是最基本的框架,其中有很多经常用到的、面向数据的低级类和数据类型,如NSString,NSArray,NSDictionary和NSNumber。而iphone手机应用开发 则还会用到UIKitk框架,这会在以后介绍到。
四:Objective-C扩展名
OC是C和SmallTalk的结合,它支持相同的C语言基本语法。与C一样,文件分为头文件和源文件,扩展名分别为.h和.m。
.h 头文件 头文件包涵类的定义、类型、函数以及常量的声明等;
.m 源文件 这个典型的扩展名用来定义源文件,可以同时包含C和Objective-C的代码。
五:头文件引入 #import
在Objective-C里,包含头文件有比#include更好的方法 #import。它的使用和#include相同,但是可以保证你的程序只包含相同的头文件一次。
例如 引入UIKit框架
#import <UIKit/UIKit.h>
六:标准输出函数 NSLog()
在Objective-C中用的打印函数是NSLog(), 当然也可以用printf(),但是NSLog()提供了一些特性,如时间戳,日期戳和自动加换行符等,用起来更方便,所以NSLog()用起来会更加的方便。例如:
NSLog(@"Hello world");
七:类方法,实例方法
Objective-c 的方法定义包含了方法类型,返回类型,一个或者多个关键词,参数类型和参数名。而且Objective-c中方法有两种类型:实例方法,类方法。实例方法前用“-”号表明,类方法用“+”表明,实例方法需要用类的实例对象调用,类方法则只能由类名调用 下面是类方法和实例方法的举例:
-(void)setCC:(NSString*)c; //实例方法
+(void)setCC:(NSString*)c;//类方法
八.变量的属性
变量的属性提供了比方法更方便的访问方式。通过@property标识符来替代getter和setter方法。使用方法就是在类接口.h文件中用@property标识符,后面跟着变量的属性,包括 copy, tetain, assign ,readonly , readwrite,nonatomic,然后是变量名 然后在实现文件.m中使用@synthesize 加变量名实现 格式如下
声明property的语法为:
@property (属性1,属性2) 类型 名字;
//.h
@property BOOL flag;
@property (nonatomic) NSString* name;
//.m
@synthesize flag,name;
各参数意义如下:
readwrite 产生setter\getter方法
readonly 只产生简单的getter,没有setter。
assign 默认类型,setter方法直接赋值,而不进行retain操作
retain setter方法对参数进行release旧值,再retain新值。
copy setter方法进行Copy操作,与retain一样
nonatomic 禁止多线程,变量保护,提高性能
属性的另一个好处就是,可以使用点"."语法来访问
九:对象初始化
OC对象的初始化有两种方法:一种是[类名 new], 第二种是[[类名 alloc]init]。这两种方法是等价的,不过,通常的Cocoa惯例是使用alloc和init,而不使用new.一般情况下,Cocoa程序员只是在他们不具备足够的水平来熟练使用alloc和init方法时,才将new作为辅助方法使用。
[[类名alloc]init]有两个动作。alloc是分配内存,是从操作系统获得一块内存并将其指定为存放对象的实例变量的位置。同时,alloc方法还将这块内存区域全部初始化为0。与分配动作对应的是初始化。
自定义初始化方法 格式如下:
-(id)init
{
if(self = [super init]){
// …
//code there
}
return self;
}
使用self= [super init]的作用是使父类完成它们自己的初始化工作。这在以后会介绍。
十:选择器selector
选择器只是一个方法名称,它以OC运行时使用的特殊方式编码,以快速执行查询。你可以使用@selector()预编译指令指定选择器,其中方法名位于圆括号中。如一个类中setCC:方法的选择器是:@selector(setCC:)。待续...