Objective-C基礎筆記(1)基本概念和第一個程式,概念的第一個特徵
一、基本概念
Objective-C(簡稱OC)是iOS開發的核心語言,蘋果公司在維護,在開發過程中也會配合著使用C語言、C++,OC主要負責UI介面,C語言、C++可用於圖形處理。C語言是面向過程的語言,OC是在C語言基礎上加上了一層物件導向的文法(將複雜麵向對象文法去掉了)。我們可以使用OC開發Mac OS X平台和IOS平台的應用程式。
2014年10月程式設計語言熱門排行榜(http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html)
從這個熱門排行榜上可以看到,高居榜首的還是c、java、object-c、c++、c#、php、python、javascript.
注意:
1、Objective-C是沒有包的概念的,也就是沒有命名空間機制,而是通過給類名添加首碼來防止類名衝突。
2、Objective-C中的關鍵字以@開頭,防止和c/c++的關鍵字衝突。
3、Objective-C中的字串以@開頭。
文法:
需要注意的是上面的紅色字部分:
BOOL類型(YES\NO)其實就是1和0
nil相當於Java中的null
self相當於Java中的this
for(xx in xx)和javascript的快速遍曆相同,相當於java中的for...each
繼承和Java相同是單繼承
二、第一個OC程式
選擇命令列程式
選擇語言位Objective-C,建立好的工程如下:
//// main.m// firstOCProj//// Created by lixiaoqiang on 14/11/11.// Copyright (c) 2014年 lixiaoqiang. All rights reserved.//#import <Foundation/Foundation.h>int main(int argc, const char * argv[]) { @autoreleasepool { // insert code here... NSLog(@"Hello, World!"); } return 0;}控制台輸出:
2014-11-11 23:44:36.052 firstOCProj[1649:99047] Hello, World!
上面的@autoreleasepool和記憶體管理有關,暫時不用管。#import <Foundation/Foundation.h> : import和include的作用一樣,唯一區別是可以防止標頭檔被重複包含。NSLog():向控制台輸出日誌,相當於c語言中的printf(),和android中的Log三、類的基本文法OC中的類分為兩個檔案,一個是.h檔案,另一個是.m檔案(是OC檔案的尾碼名).h : 類的聲明檔案,用於聲明成員變數和方法。.m : 實現.h中聲明的方法。建立Student.h和Student.m檔案,工程如下:
Student.h檔案
//// Student.h// firstOCProj//// Created by lixiaoqiang on 14/11/11.// Copyright (c) 2014年 lixiaoqiang. All rights reserved.////該檔案只是用來聲明Student這個類有哪些成員變數和方法//包含NSObject所在的標頭檔#import <Foundation/Foundation.h>//@interface @end代表聲明一個類//和Java不同的是OC中不能省略NSObject的預設繼承// : 代表繼承@interface Student : NSObject{ //定義成員變數(必須定義在該括弧內) int age;}//age的get方法//如果是動態方法 -//如果是靜態方法 + (-和+必須添加)//OC中的參數類型都用括弧括住//.h檔案中的方法都是公用方法- (int)age;//age的set方法//OC中一個 : 對應一個參數- (void)setAge:(int)newAge;@endStudent.m檔案
//// Student.m// firstOCProj//// Created by lixiaoqiang on 14/11/11.// Copyright (c) 2014年 lixiaoqiang. All rights reserved.////自訂的標頭檔使用雙引號#import "Student.h"@implementation Student- (int)getAge { return age; //age在父類中}- (void)setAge:(int)newAge { age = newAge;}@endmain.m檔案
//// main.m// firstOCProj//// Created by lixiaoqiang on 14/11/11.// Copyright (c) 2014年 lixiaoqiang. All rights reserved.//#import <Foundation/Foundation.h>#import "Student.h"int main(int argc, const char * argv[]) { @autoreleasepool { //建立一個Student對象 //1、調用一個靜態方法alloc分配記憶體 //OC 中通過類名調用方法 [類名 方法名] //[Student alloc]返回一個指標,在OC中stu稱為對象 //這個其實和Java中的對象(this)是一樣的(引用) //Student *stu = [Student alloc]; //2、調用一個動態方法init進行初始化 //stu = [stu init]; //串連起來使用 Student *stu = [[Student alloc] init]; [stu setAge:100]; NSLog(@"調用了setAge方法"); int age = [stu age]; NSLog(@"Student的age是%i", age); //釋放對象 //[stu release]; } return 0;}運行結果:
2014-11-12 00:25:03.661 firstOCProj[1707:110472] 調用了setAge方法
2014-11-12 00:25:03.663 firstOCProj[1707:110472] Student的age是100