顯示隱藏文件:defaults write com.apple.finder AppleShowAllFilesYES
隱藏隱藏文件: defaults write com.apple.finder AppleShowAllFiles –boolfalse
(輸入指令后,一定要重新啟動Finder)
關于OC考試:35分鐘機試加上30分鐘筆試(筆試包含2道C變成 一道OC變成 ?一道OC簡答)
培養面向對象的思想:必須敲當天的代碼,不敲代碼學習下來沒有效果
課后怎樣去復習:
用自己理解的方式,自己思考的方式敲代碼
沒有印象的同學,對著老師的代碼敲
什么都記不住,就直接從頭到尾抄老師的代碼
做筆記:學習好的同學都會有一套自己的筆記
API是什么意思?
首先OC是一個面向對象的編程語言
OC難點:
面向對象的概念
封裝/繼承/多態
category ?/ ?protocol
foundation(重點)
常用結構體(簡單)
KVC與KVO(簡單)
基礎班OC重點:
掌握基本的語法
基本項目的需求分析能力
面向對象的思維能力
OC與C的對比(C中的所有東西,OC中都可以用):
關鍵字:OC中新增的關鍵字大部分都以@開頭
類型,新增布爾(BOOL)類型,新增BLOCK類型,新增兩種指針類型class(類)和id類型,新增特殊類型(SEL/nil)
流程控制,新增"增強版for循環"
OC中的方法與C中的函數基本相同
OC中新增面向對象特征:封裝 繼承 多態
OC中新增面向對象的語法
新增異常處理,用于處理錯誤信息
#import的功能與#include的功能相同:
#include弊端:需要寫頭文件位置
#import優點:防止重復導入頭文件,OC中引入了新的預處理指令#import來導入頭文件
#import:既可以導入OC的頭文件,也可以導入C的頭文件
printf和NSLog的區別:
NSLog會自動換行
NSLog在輸出的時候回附加一些系統信息
NSLog接收的參數不一樣
試試用include導入會發生什么?事實證明include可以導入OC的頭文件
Foundation.h是什么:稱為主頭文件,主頭文件中又拷貝了這個工具箱內所有文件的頭文件,我們只需要導入主頭文件就可以使用這個工具箱內的所有的文件
注意點:OC完全兼容C,所以可以在OC程序中編寫C語言的代碼,并且可以將C語言的源文件與OC語言的源文件編譯到一起,組成一個可執行文件
面向對象的基本概念:
面向對象是相對面向過程而言的
面向對象與面向過程都是一種思想
面向過程(自己買電腦):
強調的是功能行為
關注的是解決問題需要那些步驟
面向對象(托朋友買電腦):
將功能封裝到對象內(朋友就是具有一定功能的對象),強調具備了功能的對象
關注解決問題需要那些對象
面向對象的特點:
是一種符合人們思考習慣的思想
可以將復雜的問題簡單化
程序員從執行者轉變成為指揮者
完成需求時首先要考慮的三件事:
先去尋找具備解決問題功能的對象
如果對象不存在,那么需要自己創建一個具有所需功能的對象
這樣簡化開發并提高代碼的復用性
OC中的類的概念:用來描述一類事物,他是對象的藍本,也就是說想要創建對象就必須先有類,并且一個類可以創建很多對象
一般情況下名詞都是類:有相同(類似)屬性和和行為的對象都可以抽象成為一個類,比如:開著坦克發射了一個炮彈打下來了一個飛機,這句話中的類有"坦克""炮彈""飛機".
?分析一個類?事物名稱,屬性,行為
定義一個類:需要類的名稱,類的屬性和行為
定義一個完整的類:
@interfaceMyClass :NSObject//其中包含new方法
{
@public//屬性公開,表示屬性可以被修改
NSString*name;
intage;
doubleheigth;
}
- (int)sumAge:(int)num;//聲明行為(聲明方法)
@end
@implementationMyClass
- (int)sumAge:(int)num//定義行為的事項方式(定義方法)
{
return(age+ num);
}
@end
定義類的注意點:
默認情況下OC對象中的屬性是不能直接訪問的,只要讓類中的屬性公開,就可以通過一個指向結構體的指針來操作對象中的屬性了,@public這段代碼就是讓一個類變為公開的類
NSObject是為了讓這個類具備創建對象的能力
定義行為的注意點:誰最清楚這個行為,那么該行為就屬于誰(例如電腦的開機關機,這個行為屬于電腦,而不屬于人)
理解:
屬性:它有什么(它有哪些特征)
行為:它能什么(它有哪些功能)
通過一個類來創建一個對象:
我們通說使用new方法來通過一個類創建一個對象: 類名稱 對象名稱 = [類名稱 new];例如:
MyClass*p = [MyClassnew];
注意點:OC中的類本質就是一個結構體,對象名稱實際上是一個指針(指向結構體的指針)
OC中定義一個方法與C中定義一個函數基本一樣,也分四步:
確定方法名稱
確定形參列表
確定返回值
確定返回值類型
注意點:OC中定義的方法如果沒有形參,那么不用寫()直接寫;結束就可以,因為OC中的()是專門來擴數據類型的,例如(void)
OC中的方法分為兩種:類方法,對象方法,
OC中的類方法用+表示,只能由類來調用
OC中的對象方法用- 表示,只能由對象來調用
發消息:
在OC中通過類/對象來調用起方法(功能)的過程叫做給這個類/方法發消息
在OC中只要需要發消息就用[],例如: ?[p about]給p對象發消息調用about方法
對象方法:
特點:在對象方法中想訪問該對象內的屬性,可以直接寫屬性名稱即可
方法中如果有形參,那么需要在每個參數的數據類型前面加上一個冒號:
注意點:冒號也是方法中的一部分,如果一個方法有兩個形參,那么這個方法的名稱后面要帶兩個冒號,也就是說:
sum:
sum::
這是兩個不同的方法名稱
類方法:
如果不想每次使用方法都需要創建對象來開辟存儲空間,并且如果該方法中沒有使用到屬性(成員變量)那么可以把這個方法定義為類方法
類方法和對象方法的區別:
對象方法必須由對象調用,否則會報錯;反之亦然
對象方法可以字節訪問成員變量,類方法中不可以直接訪問屬性(成員變量)
類方法的優點:調用類方法的效率會比調用對象方法高(參考對象在內存中的存儲情況)
類方法和對象方法可以進行相互調用(參考第一點)
4.1 對象方法中可以直接調用類方法
4.2 可以在類方法中簡潔調用對象方法(但是在企業開發中千萬不要這么寫)
4.3 類方法中可以直接調用其他類方法
4.4 對象方法中可以直接調用對象方法
類方法的應用場景:
如果方法中沒有用到屬性,那么盡量使用類方法,因為類方法的效率要高于對象方法
類方法一般用來定義一些工具方法
類方法和對象方法的區別:
對象方法可以直接訪問成員變量,對象方法不可以直接訪問成員變量
對象方法只有對象可以調用,類方法只有類可以調用
類方法的效率要比對象方法高(參考對象在內存中的表現形式)
*對象方法與類方法可以相互調用
如何進行多文件開發,多文件開發有什么好處?
將方法的聲明寫在.h中,將方法的實現寫在.m中,在方法中需要使用誰就導入誰的頭文件
多文件開發可以提高團隊的協作效率
多文件開發可以提高開發的速度
多文件開發可以提高程序的可維護性
多文件開發可以提高代碼的可讀性