oc:
在c的基礎上增加了一層最好的物件導向語法
副檔名.m
基本語法:
1、關鍵字:
基本上所有的關鍵字都是以@開頭
2、字串一@開頭
其他與法:
引進了bool型別(yes,no)
nil 相當於c語言中的null,也是0
nslog(@"hello");nslog(@"%d",27);
//@與「」之間無空格,且輸出之後自動換行
開發過程
.m原始檔->.o目標檔案->a.out可執行檔案
#import的用途
1、跟include一樣,拷貝檔案內容
2、可以防止檔案內容被拷貝多次
foundation 框架
nsobjcruntime.h中有宣告nslog的函式宣告
#import
編譯時相同
鏈結時如果用到foundation框架,要標明
cc xx.m -framework foundation
每乙個框架都有自己的主標頭檔案,要想使用這個框架中的所有.h檔案就要import 這個框架下的這個.h檔案(主標頭檔案)
因此 要使用nslog()函式需要
#import
引入foundation.h這個主標頭檔案後,就可以使用整個foundation框架中的東西
foundation框架標頭檔案的路徑
執行過程:
1、編寫oc原始檔:.m,.c
2、編譯:cc -c ***.m,***.c
(只有用到foundation框架才需要加上-frameworkfoundation)
4、執行:./a.out
bool布林型
本質:typedef signed char bool;
取值範圍: yes,no
#define yes (bool)1
#define no (bool)0
輸出:當做整型來輸出
nslog(@"%d",yes)
注意:必須要大些
面向過程(procedure oriented):關注解決問題的步驟
物件導向(object oriented):關注解決問題所需要的物件
物件導向程式設計(object oriented programing)簡稱oop
1、類的設計
①、類名 類名的第乙個字母必須大寫,不用下劃線
②、屬性
③、行為(功能)
2、植物大戰殭屍
殭屍:*類名:zoombie
*屬性:life(生命值)、speed(速度)、gongjili(攻擊值)
*行為:walk(行走)、bite(咬)、die(死亡)
3、雷電飛機
*類名:plane
*屬性:life、gongjili、speed、bombcount、
*行為:fly、bomb、shoot、die
4、電腦
*類名:computer
*屬性:price、band(牌子)、expiredate(保質期)
*行為:open、close
具體例子:
類名:car
屬性:輪胎個數、時速
行為:跑
//完整的寫乙個函式:函式的宣告和定義(實現)
//完整的寫乙個類:類的宣告和實現
//1、類的宣告:用來宣告物件的屬性、行為
//:nsobject 目的是:讓car這個類具備能建立物件的能力
@inte***ce car :nsobject//開始
//方法(行為):方法名、引數、返回值(宣告、實現)不//能放在{}之中
//只要是oc物件的方法,必須以-開頭
//oc方法中任何資料型別,都必須用()擴住
//oc方法中()的作用就是擴住資料型別
- (void) run;//run()中無資料型別,不需要()
@end//結束
//2、類的實現
@implementation car
//方法的實現(說清楚方法裡面有什麼**)
-(void)run
@end
int main()/*人
類名:person
屬性(成員變數\例項變數):體重、年齡
行為(方法):走路、吃
*///1、類的宣告(寫成員變數、寫方法的宣告)
@inte***ce person :nsobject
- (void) walk;
@end
//2、類的實現
@implementation person
//實現@inte***ce中宣告的方法
- (void)walk
@end
int main()
注意:1、inte***ce與implementation不能巢狀
2、方法的實現必須寫在implementation裡面
3、成員變數不允許在定義時賦值
oc方法和函式的區別:
方法:1、物件方法都是以減號-
2、物件方法的宣告必須寫在@inte***ce和@end之間,物件方法的實現必須寫在@implementation和@end之間
3、物件方法只能由物件來呼叫
4、物件方法歸類\物件所有
函式1、函式能寫在檔案中的任意位置(除@inte***ce與@end之間),函式歸檔案所有
2、函式呼叫不依賴於物件
3、函式內部不能直接成員變數名訪問某個物件的成員變數
/*計算器類
方法:1、返回π
2、計算兩個整數的和
3、計算兩個整數的和
*/帶引數的方法名(方法名:claculator: 類中可出現名為claculator 的另乙個方法 不帶:)
oc方法中乙個引數對應乙個冒號,該冒號也是方法名的一部分
- (int)claculator:(int)num;
- (int)sum:(int)num1(加空格) :(int)num2;//一定加空格
- (int)sumwithnum1:(int)num1 andnum2:(int num2);
- (int)sumwithnum1:(int)num1 andnum2:(int num2) andnum3:(int)num3;
相當於c中的
int claculator(int num){}
主函式中的呼叫:
[jsq calculator:10];//計算10的平方,呼叫方法+引數傳遞
IOS學習 OC基礎學習4
點語法 person類中有 age乙個成員變數 設定成員變數 age的值 person p person new p.age 10 p setage 10 獲取成員變數的值 int a p.age p age 根據有無賦值判斷是get方法還是set方法 點語法的本質還是方法呼叫 可通過在set和ge...
iOS開發學習筆記 OC基礎
for int i 0 i items count i for nsstring item in items 快速列舉的限制 如在迴圈體中增加或刪除物件,則不能使用快速列舉,這時只能用for迴圈。nslog函式負責將指定字串輸出到xcode控制台。nslog的實參個數並不確定,但第乙個實參是必須的,...
IOS學習 OC記憶體管理
記憶體管理 引用計數器 oc物件被引用的次數,為0的時候該物件被銷毀,記憶體 retain 引用次數 1 返回的是物件本身 release 引用次數 1 沒有返回值 retaincount 獲取引用次數。dealloc oc物件被銷毀的時候會呼叫dealloc方法,繼承該 方法 放最後面 super...