一:面向對象的思想
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:)。待續...