以前的一片文章簡單的介紹了OC的相關概述,從這篇開始咱們就開始學習OC的相關知識了,在學習以前,我的感受須要瞭解的其餘的兩門語言:一個是C/C++,一個是面向對象的語言(固然C++就是面向對象,不過這裏最好仍是Java)。在幹活以前,得先找到一個好工具,不過偉大的蘋果公司已經給咱們準備好了一個開發利器:XCode。在這方面Google可能作的就差了點,其實在開發Android的人大部分人都喜歡用Eclipse,可是Eclipse的可視化編程的效果和XCode差的不是一個級別的。固然Google後來開發了一個AndroidStudio,反正我沒用過,不知道效果怎麼樣,應該不怎麼樣,否則Eclipse仍是那麼受歡迎。java
學習任何一門語言都是從HelloWorld開始的,這個是一個套路了,那麼OC也不例外,咱們就從第一個HelloWorld開始,Xcode下載仍是很方便的,這裏就不作太多的介紹了,咱們打開Xcode:點擊新建一個Project:編程
咱們如今時學習OC,因此選擇下面的OS X,而後選擇命令行,點擊下一步:框架
這個和Android就差很少了,第一個是項目名,第二個是組織者名稱(企業開發就是公司的名稱,我的開發就是我的的名字,這個值會在每一個代碼中體現出來的,做用不大,能夠忽略),第三個是組織者的惟一標識,和Android中應用的packagename,第四個就是選擇開發語言,這裏選擇OC,不過他還有其餘選項:函數
Swift,C++,C,因此說吧,Xcode仍是很強大的,並且超級方便,Eclipse中也是能夠開發C/C++的,可是須要安裝插件,感受用起來也不是很方便。工具
後面的工做就是選擇文件夾了,簡單。新建一個工程以後,咱們在左側欄中能夠看到項目的結果,其中main.m源文件是自動建立的。學習
* C語言的源文件拓展名爲".c",OC的源文件拓展名爲".m"
* main.m文件是咱們這個程序中的惟一一個源文件
* 編譯器會將.m文件編譯爲.o目標文件,好比main.m編譯成功後會變成main.o文件
spa
下面就來看一下代碼:插件
// // main.m // 01_HelloWorld // // Created by jiangwei on 14-10-10. // Copyright (c) 2014年 jiangwei. All rights reserved. // //OC中使用#import導入一個頭文件 //和#include<Foundation/Foundation.h>效果是相同的,可是仍是有區別的,後續會說明 #import <Foundation/Foundation.h> int main(int argc, const char * argv[]) { //建立一個自動釋放池 @autoreleasepool { //把"Hello,World!"字符串打印到控制檯 //打印的時候是自動換行的 //OC語言中字符串用@""表示 //NS開頭都是OC裏面的命名習慣,須要區分,jobs成立的Next setp公司有關係 NSLog(@"Hello, World!"); //OC中經常使用的類型 NSInteger s = 10; //布爾類型 BOOL a = YES;//NO BOOL b = TRUE;//FALSE //OC中的字符串(不屬於基本類型,是對象類型,是指針) NSString *str = @"jiangwei"; //%@打印一個字符串對象 NSLog(@"%@",str); //表示範圍的結構體 //第一個參數是起始位置 //第二個參數是範圍長度 NSRange rang = {1,3}; NSMakeRange(1,3);//等價於上面的一行代碼 } return 0; }看到了吧,第一個HelloWorld程序都是main函數開始的,不過這個和C更像。。
來分析代碼:命令行
#import <Foundation/Foundation.h>其中#import關鍵字是用來導入頭文件的,相似於C中的#include,不過他們兩仍是有區別的,後面的例子中會說明,固然這個和Java中的import關鍵字效果差很少,不過OC不是開源的,因此,只能導入頭文件,咱們也只能看到頭文件中的定義,是看不到源碼的,可是Java中點擊就能夠查看源碼了,這個蘋果就沒Google好了。。
這裏的Foundation.h頭文件是系統提供的最基本的框架,後面咱們仍是能夠本身開發框架的,這個就和C語言中的stdio.h效果相似,是系統給咱們提供了一個最基本的開發庫。咱們按住Command鍵(功能和Window中的Ctrl同樣的),單擊就能夠查看Foundation.h中的全部定義了:指針
(若是咱們想回去的話,能夠點擊control+command+左右箭頭,這個相似於Eclipse中的Alt+左右箭頭)
其實它內部全是導入頭文件的代碼,而這些頭文件就是組成這個系統框架的基礎,咱們後面的學習就是一個一個來學習的。
接着看代碼:
//建立一個自動釋放池 @autoreleasepool { //把"Hello,World!"字符串打印到控制檯 //打印的時候是自動換行的 //OC語言中字符串用@""表示 //NS開頭都是OC裏面的命名習慣,須要區分,jobs成立的Next setp公司有關係 NSLog(@"Hello, World!"); //OC中經常使用的類型 NSInteger s = 10; //布爾類型 BOOL a = YES;//NO BOOL b = TRUE;//FALSE //OC中的字符串(不屬於基本類型,是對象類型,是指針) NSString *str = @"jiangwei"; //%@打印一個字符串對象 NSLog(@"%@",str); //表示範圍的結構體 //第一個參數是起始位置 //第二個參數是範圍長度 NSRange rang = {1,3}; NSMakeRange(1,3);//等價於上面的一行代碼 }
這裏有一個知識點就是自動釋放池概念,這裏咱們就不太深刻介紹了,後面會有專門的一篇文章去介紹他,由於他是OC語言的一個特點,並且也是最難理解的一個知識點,他和Java中的垃圾回收器差很少。咱們在建立一個工程的時候,這個自動釋放池的代碼會自動建立的,咱們只要在這個池子中寫咱們的代碼就能夠了。
NSLog(@"Hello, World!");這句和C中的printf同樣,以及Java中的System.out.println效果都是同樣的,打印結果,不過他和printf更像,由於他支持格式化輸出。
在看一下OC中的一個很重要的對象是字符串,並且咱們在定義字符串對象的時候,要加@符號,這個和Java是有區別的,不過還有其餘方式去建立字符串的,效果和Java很想,好比用構造方法去建立。後面會介紹
//OC中的字符串(不屬於基本類型,是對象類型,是指針) NSString *str = @"jiangwei";
使用NSLog打印對象,用格式化輸出,佔位符是%@,打印字符串的對象的時候,輸出的是字符串的值,這個和Java中的System.out.println輸出結果同樣,其實就是調用對象的toString方法,固然OC中也是會調用一個方法的,後面會說。
//%@打印一個字符串對象 NSLog(@"%@",str);
好了,到這裏一個HelloWorld就介紹完了。
瞭解了OC中的定義變量方法,打印信息方法,基本類型等知識點。點擊Xcode左上角的運行按鈕:
咱們能夠看到運行結果了,同時右上角的那幾個按鈕,就是選擇開啓四個方向上的窗口,屢次點擊就知道功能了。