標籤:style io ar color os 使用 sp on 檔案
• OC語言概述
1.早在20世紀80年代早期,Bard Cox發明了Objective C, 是擴充的C,物件導向的程式設計語言。
2.NEXTSTEP簡稱NS
a.1985年,Steve Jobs成?立了NeXT公司。
b.1988年,NeXT SoftWare公司獲得了OC的語言授權, NEXTSTEP環境成為了蘋果作業系統,建立的開發包。MACOS
c.1996年,12月20?日,蘋果公司宣布收購了NeXT software公司,NEXTSTEP環境為apple公司下主要開發、發?行作業系統OSX的基礎,這個開發環境的版本被蘋果公司命名為 Cocoa(可可)架構
NSString NS=NEXTSTEP
3. Cocoa架構
a.Cocoa是蘋果公司為MAC OS X所建立的原生物件導向編程環境。
b.Cocoa應用程式一般在蘋果公司的工具xcode上用 Objective C編寫的。
c.使用Cocoa編程環境開發的應用程式叫Cocoa應?用。 app->application->應用程式
Cocoa Touch架構 ->Ctapp
d.Cocoa架構主要由兩部分組成,Fundation架構和 Application Kit架構。
e.Fundation架構,基礎架構,包括:字串、數字、數組、字典、集合等
#import <Foundation/Foundation.h>
f.Application Kit架構,應用程式工具箱,它包括了實現程式圖形、事件驅動和使用者介面的全部對象,視窗、對話方塊、按鈕、 菜單、捲軸、文字框等,而且這個列表還在不斷的添加。
4.IOS
蘋果公司硬體上的一個作業系統,蘋果公司可攜式裝置上的作業系統。在2007年1月9日,MacWorld大會上公布的這個系統, 最初設計給iphone使用的,後來陸續用到ipodtouch、ipad、 apple TV等蘋果產品。
• 文法格式區別
1.以前在C語言中使用的include現在換為import,作用和C語言include相似的,必須換為import,且支援避免重複匯入的問題。
2.以前在C語?中使用的printf函數來進行資料的輸出、列印, 現在換為NSLog函數,日誌輸出,注意輸出字串資訊的時候, 要在上面加上@,不需要使用\n作為分行符號。
3.在編譯的時候,gcc雖然可以編譯,但是不支援OC的新文法,源檔案由原來的.c檔案,變為.m檔案了。
4.在編譯時間,使用新的編譯命令clang,編譯連結時,需要指定使用的架構(庫)。
clang -framework Foundation main.m
5.編譯後依然產生了a.out?檔案,可以使用./a.out來運行程式。
• include與import
#import <>或""和#include<>或""的區別,objc中所有得檔案包含指令都使用#import<>或#import ""來實現,可以避免標頭檔被重複包含,自動剔除重複的標頭檔,如果要使用 #include<>或""需要通過#ifndef條件編譯來實現。
• 邏輯資料類型BOOL
a.bool b1 = false;//true 1,flase 0
b.BOOL b2 = YES;//YES 1,NO 0
物件導向概念
• 什麼是物件導向程式開發
1.面向過程 資料結構 + 演算法
2.物件導向 屬性 + 行為
• 為什麼使用物件導向的編程思想
使用物件導向的編程思想,可以大大的降低企業專案的開發週期和成本,提高了開發的效率,以及代碼的複用性,大大的降低 了開發的難度。提高了代碼的可讀性以及可維護性。
• 對象
Anything is Object.萬物皆對象。 現實中的對象是?種客觀存在, 程式中的對象是?片記憶體中的資料。
• 現實中的對象
現實中的學生對象
有什麼?姓名、年齡 能幹什麼?學習
屬性(成員): age,name
方法(函數)study()
用解決現實中的問題的?法,來解決電腦問題。
• 什麼是類
具有相同屬性和方法的同一類元素的總稱。
類是一個抽象的概念,比如:人類 動物 蔬菜 水果 汽車, 區分類還是一個對象時,看它能否繼續被細分。對象就是不能繼續被細分的。類是就是現實事物的一個抽象。
設計(圖紙)(夢想中)---工廠生產--->手機(現實)
代碼(檔案)---執行載入--->記憶體(資料)
類 ---執行個體化 --->對象
• 定義類的文法格式
設計類Student 代碼存在檔案中,OC class。 一個類是由兩個部分組成的 *.h?檔案和*.m?檔案
1).h檔案定義類的interface部分(聲明)
@interface Student : NSObject
@property int age;//聲明屬性!
-(void)study;//聲明?方法!
@en
2).m?檔案定義類的implemention部分(實現)
@implementation Student//方法的定義、實現!
-(void)study{
"NSLog(@"學生執行了study方法");
}
@end
.什麼是對象
對象就是類在記憶體中的一個執行個體。對象就是類的一個具體對象。 不可細分,代表著某一個具體的東西。
• 將類執行個體化變為對象
1)main.m?件中的->main函數(程式?口)執行程式
2)能過類發送alloc,通過一個類建立對象,通過stu變數(*stu),找到記憶體的對象。
3)可以向對象發送訊息(函數),此時對象就會響應訊息,執行方法。
4)對象如果有屬性,對象.屬性 = 值,給對象的屬性賦值
.方法
• 什麼是方法 對象可以幹什麼,有什麼功能。
• 方法與函數區別
函數只是一個程式的程式碼片段,與類無關係。
方法是類的一部分,代表對象可以幹什麼。
正常來講,類必須執行個體化,方法才可以使用,執行個體方法調用方法時,也叫做向對象發送訊息。
• 方法命名 文法格式與函數非常相似,但截然不同。使用方法時,在.h?檔案中聲明,在.m檔案中實現。
-(傳回值類型) 方法名; //無參的方法
eg:-(void)method;
• 方法的參數
-(傳回值類型) 方法名:(參數類型)參數名;//有參的方法
eg:-(void)method3:(int)num;
-(傳回值類型) 方法名:(參數1類型)參數名1 :(參數2類型)參數名2 :(參 數n類型)參數名n;//多參的方法
eg:-(void)method4:(int)arg1 :(int)arg2; 注:“:”符號也是方法名的?部分
• 方法的參數
-(傳回值類型) 部分方法名:(參數1類型)參數名1 部分方法名2:(參數2類型)參數名2 部分方法名n:(參數n類型)參數名n; 部分方法名起到提示作用,並不影響程式的執行
eg:-(void)printInfoWithAge:(int)age!
andGender:(char)gender!
andSalary:(double)salary;
方法的傳回值
與C語言中的函數傳回值使用方式一致。
• 公有方法與私人方法
在.h檔案中聲明的方法,並且在.m檔案中實現就是公有方法。
在.h檔案中未聲明的方法,並且在.m檔案中實現就是私人方法。
執行個體變數
• 什麼是成員變數與執行個體變數
在類中聲明的變數就是成員變數。類執行個體化變為對象,此時成員變數也就變為執行個體變數。 一個對象會有自己獨特的資料和別的對象不同,這些資料會保 存在一些特殊的變數中,這種變數叫執行個體變數。類的每個執行個體(對象)都有一份。 類對象(執行個體)(引用)
記憶體中沒有 記憶體中有
成員變數 執行個體變數
成員方法 執行個體方法
• 定義變數 在.h檔案中,使用{}括起來的地區聲明,類型C語言的變數聲明。
• 公有變數與私人變數 在.h檔案中聲明的變數為公有變數,在.m檔案中聲明的變數為私人變數
Objective C筆記(第一天)