【Objective-C】04-第一個OC程序解析


說明:這個Objective-C專題,是學習iOS開發的前奏,也為了讓有面向對象語言開發經驗的程序員,能夠快速上手Objective-C。如果你還沒有編程經驗,或者對Objective-C、iOS開發不感興趣,請忽略。學習本專題之前,建議先學習C語言專題。

在上一講,已經新建了第一個OC程序,這講就來解析它內部的代碼。

查看項目結構可以發現這個程序中只有一個源文件:main.m

打開main.m文件,代碼如下

 1 #import <Foundation/Foundation.h>
 2 
 3 int main(int argc, const char * argv[])
 4 {
 5 
 6     @autoreleasepool {
 7         
 8         // insert code here...
 9         NSLog(@"Hello, World!");
10         
11     }
12     return 0;
13 }

1.程序的入口點:main函數

跟C程序一樣,OC程序的入口點依然是main函數。在main.m的第3行已定義了一個main函數。

 

2.@autoreleasepool

在Java中,有垃圾回收機制,系統會自動回收不再使用的對象;而OC是不支持垃圾回收的,需要開發人員編寫代碼來釋放對象所占用的內存。在第6行有個@autoreleasepool{},這是跟內存管理有關的,暫時不用理解它的意思,你只需要記住:以后的OC代碼都寫在@autoreleasepool的{}內部。

 

3.NSLog

1> 第9行的NSLog是一個日志輸出函數,它可以將傳入的OC字符串參數輸出到控制台上。

2> 函數參數@"Hello, Wolrd!"是一個OC字符串,並不是C語言字符串,所有OC字符串的前面都有個@。

3> 第9行代碼NSLog(@"Hello, World!");的輸出結果是:

紅框左邊的信息是NSLog自動加上去的,比如日志輸出時間、項目名稱等。而且NSLog輸出完畢后自動換行

4> NSLog也可以像C語言的printf函數一樣支持格式符

1 int age = 10;
2 NSLog(@"My age is %i and height is %.2f", age, 1.55f);

* %i表示接收整型數據

* %f表示接收浮點型數據,%.2f表示保留2位小數

* 輸出結果:

2013-04-06 17:43:07.380 第一個OC程序[693:303] My age is 10 and height is 1.55

 

4.#import

1> #import是一個預處理指令,作用跟C語言的#include類似,都是 包含(拷貝)某個文件的內容 到 預處理指令所在的位置

2> 第1行的#import <Foundation/Foundation.h>表示包含Foundation框架中的Foundation.h文件。

1) Foundation框架中包含了很多常用的類和函數,比如字符串處理類NSString、日志輸出函數NSLog。它的重要程度相當於Java中的java.lang.*

2) Foundation框架和Foundation.h文件的位置:

3> 我C語言專題第三講說過:.h稱為頭文件,一般用來聲明一些函數,想要使用這些函數,就必須用#include包含函數所在的頭文件。我們在第9行中使用的NSLog函數存在於Foundation.h文件中,因此要先包含Foundation.h文件才能使用NSLog函數。就好像在Java中,你用import關鍵字引入一個類后才能正常使用這個類。

4> 在C\C++中,我們用#include來包含頭文件,缺點就是同一個頭文件可能被包含多次。為了解決這個問題,一般會這樣寫頭文件:

#ifndef _TEST_H_
#define _TEST_H_

/*.....*/

#endif

我們在OC中,就使用#import來包含頭文件,優點是可以自動防止同一個頭文件被包含多次

5> #import <...>表示包含系統自帶的文件,#import "..."表示包含開發人員自己創建的文件


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM