Objective C 快速入門學習一

weixin_33816946發表於2014-07-17

Objective-C程式設計

 

1. 直接用Xcode作為IDE,捨棄gcc編譯方面的學習。
2. 入門例子:
Eg:列印Hello World 控制檯程式

#import<Foundation/Foundation.h> //匯入Foundation.h標頭檔案。
//標頭檔案字尾.h,原始檔字尾.m,Objective-C++字尾.mm。

int main(int argc, const char* argv[])//主函式(和C/C++相同, // 和/* 內容 */表示註釋符號)
{
      NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];//alloc一個NSAutoreleasePool物件並init。分號表示一句結尾。
  //等效於兩句 NSAutoreleasePool *pool = [NSAutoreleasePool alloc]; [pool init];
  //該程式碼由Xcode自動生成,初步簡單的理解,自動釋放objects機制,避免記憶體洩露。

  /*複雜理解,Cocoa(蘋果的物件導向開發框架)的記憶體管理主要依賴於Reference Counting, 而NSAutoReleasePool就是用來支援它的。
  1.一個object銷燬觸發時,可以被這個object的release方法觸發,也可以被autorelease觸發,如果是後者,只有pool drain時,才會釋放對應的object
  2.每建立一個pool,則pool與相應的autoreleased object放入stack,當pool drain時,同時release掉其包含的objects。
  3.在Reference Counting的環境裡, Cocoa總是期望在每一個thread都存在一個autorelease pool,如果沒有,可能會記憶體洩露。
  4.銷燬pool不會用release,原因是為了讓程式同時相容Reference Counting記憶體管理環境 與 Garbge Collection(垃圾回收)環境, 因為在Garbage

  Colloection 環境中drain的作用是觸發collect garbage動作.*/


  //插入自定義程式碼區
  NSLog(@"Hello World"); // @"內容" 表示常量字串 
  /*NSLog格式化列印函式,類似C語言的Printf。 
  Objective-C很多都已NS開頭的函式,例如NSArray, NSString 等等NS字首類,函式歸屬於屬於cocoa Fundation基礎類庫
  可能與Apple收購NeXT Software,"NS"被作為Fundation中所有成員的字首*/

  int iValue1, iValue2;
  NSLog(@"iValue1 = %i, iValue2 = %i", iValue1, iValue2); //%d、%o、%x也可以

  [pool drain];//Xcode自動生成,釋放已分配的記憶體池
  return 0;
}

相關文章