標籤:style 檔案 io cti 代碼 re
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;
}