Object-c 學習筆記(一)

來源:互聯網
上載者:User

標籤:objective-c   iphone   xcode   

想做IOS開發,培訓之前自己先自學一段時間,於是開一篇新的筆記來記錄學習的點滴吧。

Objective-c是以c語言為基礎的擴充集,當然首先要得熟悉c語言再去學習Objective-c,我是根據《Objective-c基礎教程》來自學的。鄙人初學,如有觀點不同或者錯誤之處請指正亦可貽笑大方。


構建Objective-c程式


我們需要先下載Xcode來作為基本的編輯器,下載安裝完成後我們來建立一個Xcode Project,之後我們選擇



要在Type中選擇Foundation,然後選擇Next,按步驟儲存項目即可。


main.m就是包含了程式的原始碼。


HELLO WORLD 程式:

在C語言中我們可以這樣來輸出Hello World這句話

#include <stdio.h>int main () {   printf ("Hello World !");   return 0;}

現在可以在main中輸入以下

#import <Foundation/Foundation.h>int main (int argc,const char *argv[]) {   NSLog (@"Hello World !");   return 0;}
點擊左上方的運行後會在下面顯示運行結果,


程式碼分析:

Xcode通過 .m副檔名來表示檔案使用的是Objective-c代碼,應該是由object-c編譯器處理。那麼如果由c語言基礎,不難看懂是由main()函式宣告語句和return 語句結尾。這裡的

#import <Foundation/Foundation.h>

語句告訴編譯器尋找Foundation架構中的Foundation.h標頭檔。

那麼什麼是架構呢?所謂的架構就是一種把標頭檔、庫、圖片、聲音等內容聚集在一個獨立單元中的集合體,Foundation屬於Cocoa工具包中的內容,主要處理的是使用者介面之下的那些(Layer)的特性,比如資料結構和通訊機制。

我們使用的唯一一行Object-c語句的實際代碼就是用了NSLog()函數

NSLog(@"Hello World !");

這行代碼是向控制台輸出Hello World !在C語言中常用的是printf()語句。NSLog()接受一個字串作為其第一個參數,該字元可以包含格式說明符例如:%d,此函數會接受與其格式說明符相匹配的其他參數。當然,Objective-c是c語言的拓展集,在輸出時依然可以使用printf()函數來進行輸出(建議使用NSLog)。

@符號是什麼東西?

@符號是Objective-c在C語言基礎上添加的特性之一。@意味著引號內的字串應該作為Cocoa的NSString元素來處理。

NSString又是什嗎?

NSString是Cocoa中的字串。NSString支援:字串長度,字串比較以及整形或浮點值轉換等等。

NS是指什嗎?

Cocoa在給所有的函數、常量和變數以及類型名都添加了NS首碼。這個首碼告訴我們這個函數是來自Cocoa而不是其他的工具包。

另外,例如NSArray存放數組,NSDateFormatter來設定不同的時間格式,NSThread提供多線程,NSSpeechSynthesizer能夠聽到語音。


布爾類型:

在c語言中,布爾類型有True和False兩個值,在Objective-c中則是YES和NO兩個值。

下面是一個簡單的例子:

#import <Foundation/Foundation.h>


BOOL areIntsDifferent (int thing1,int thing2) {   if (thing1== thing2) {      return (NO);   } else {      return (YES);   }}NSString *boolString (BOOL yesNo) {   if (yesNO == NO) {      return (@"NO");   } else {      return (@"YES");   }}int main (int argc, const char *argv[]) {   BOOL areTheyDifferent;   areTheyDifferent = areIntsDifferent (5,5);   NSLog(@"are %d and %d different ? %@",5,5,boolString(areTheyDifferent));   areTheyDifferent = areIntsDifferent (23,42);   NSLog(@"are %d and %d different ? %@",23,42,boolString(areTheyDifferent));   return (0);}

程式碼分析:

首先是areIntsDifferent()函數,

BOOL areIntsDifferent (int thing1,int thing2) {   if (thing1== thing2) {      return (NO);   } else {      return (YES);   }}
接受兩個整形的參數,返回一個BOOL值,根據thing1和thing2來進行比較,如果相同返回NO,如果不同返回YES

第二個函數是,

NSString *boolString (BOOL yesNo) {   if (yesNO == NO) {      return (@"NO");   } else {      return (@"YES");   }}

這個函數的主要作用是將bool值轉化為顯而易見的字串。boolString()的返回值是一個指向NSString的指標,這意味著函數會返回一個Cocoa字串。

main()函數

areTheyDifferent變數儲存了areIntsDifferent()的返回的YES或者NO。

那麼在NSLog裡面的%@是什麼意思呢?

在NSString()中返回了一個指標,在NSLog中寫%@格式說明符是為了通知NSLog接受適當的參數,將其作為NSString,並且使用字串中的字元將其發送到控制台中。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.