oc基礎
xcold中.m檔案包含了oc**,由oc編譯器處理,c編譯器處理.c檔案,c++編譯器處理.cpp檔案
import和include的區別是確保檔案製備包含一次
#import告訴編譯器檢視fundation框架中的fundation標頭檔案,框架是乙個技術的集合體,包括標頭檔案庫,影象和聲音,包含十個甚至上百個頭檔案,但是每個框架都有乙個主標頭檔案,包含了這個框架中所有的標頭檔案
nslog(@「hello o.c」);相當於c中的printf輸出語句,@告訴編譯器雙引號中的字串要當做nsstring處理,
相關術語
1 類:類是一種結構體,表示物件的型別
2 物件:物件是一種結構,包括資料和指向其父類的指標(也稱訊息)
3 訊息:告知物件要執行什麼操作
4 方法:是物件要執行操作的**
inte***ce部分
在建立類的時候,編譯器需要有關類的一些資訊,inte***ce可以完成該任務
@inte***ce circle : nsobject 定義乙個類,類的名稱是circle,父類是nsobject
類的例項變數
-(void) setfillcolor:(shapecolor )fillcolor; 定義了撒個例項方法,
-(void) setbounds:(shaperect) bounds; 在這裡叫做方法宣告
-(void) draw;
@end
@implementation 指令,告訴編譯器將為某個類提供**
(void) setfillcolor :(shapcolor) c 重新定義方法
fillcolor = c; c為新的引數名
-(void)setrect:(shaperect) b
bounds = b;
- (void) draw
nslog(@「drawing a circle in (%d %d %d %d) in %@
」,bounds.x,bounds.y,bounds.width,bounds.height,colorname(fillcolor));
@end
例項化物件
當我們建立可愛你的圖形,如紅色的圓形和綠色的矩形,專業術語是例項化,例項化物件時需要分配記憶體空間,然後被初始化為一些預設值不同於剛分配空間時的一些隨機值,分配空間結束和初始化後,就建立了乙個新的物件例項。我們可以通過向類傳送乙個new訊息來建立乙個新的物件
在處理物件和類之間的關係時,要注意兩個關係繼承和復合
繼承繼承可以減少大量的重複**多次出現,避免在修改的時候忘記某一處的修改而導致奇怪的bug,
通過繼承可以實現如下的轉變
circle和
rectangle
是shape
的子類,繼承了
shape
父類的
fillcorlor和
bounds方法
相關術語
超類(父類):是所繼承的類
子類(孩子類):實施繼承的類
改變方法的實現需要重寫父類的方法,
方法排程的機制
當**傳送訊息的時候,將在當前類中進行查詢相應的方法,如果排程程式無法在當前類中找到該方法,就會到該物件的超類中查詢,
例項變數
建立乙個新的物件時,物件要先繼承來自父類的例項變數,然後才可以新增自己的例項變數
每個方法呼叫都會有乙個self
指標,指向訊息接受物件
super關鍵字
為了呼叫父類的方法要用super
作為方法呼叫的目標
一起學習程式設計吧
第一次寫部落格 我的程式設計之路 學習程式設計是個堅持而又長遠的路,合適的方法和習慣將讓你走的更平坦,下面就談談我的感想吧!1.目標 不管做什麼都會事先定乙個目標,程式設計也是得有自己的目標,比如以後想幹什麼,具體做什麼,想學哪門語言,程式語言有多種,不在乎多在於精,計算機語言都是相通的,精通一門語...
和我一起創業 規則
我是一名優秀的計算機軟體專家,擁有系統分析師證書。在我得創業聯盟中如果有 一名有資格的市場經理人,一位出色的ui設計師,這個聯盟將可以緊密地結合在一起,並產生創收。如果您是這樣2種人,那麼和我聯絡吧。1 我們每人初期以專業技術入股,分別佔1 3的股權。按照900股計算。每人300股。2 第乙個專案之...
和我一起學Flask ORM
from sqlalchemy.ext.declarative import declarative base engine create engine db url base declarative base engine 1,用base 類作為基類來寫自己的orm類 要定義tablename類屬...