一:面向对象的思想
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框架
六:标准输出函数 NSLog()
在Objective-C中用的打印函数是NSLog(), 当然也可以用
PRintf(),但是NSLog()提供了一些特性,如时间戳,日期戳和自动加换行符等,用起来更方便,所以NSLog()用起来会更加的方便。例如:
七:类方法,实例方法
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:)。待续...