2012-01-28

Object-C Class

在物件導向語言中使用 object 來傳遞資料是很常見的,例如 ASP.NET 中有 DTO, POCO, ViewModel...等,在 Cocoa 也需要使用 object 來傳遞資料,在 Object-C 自行實作 Class 比起 C# 來說要複雜一點。

Object-C 中的 Interface 與 C# 的 Interface 不太一樣,在 C# 中 Interface 可有可無,在用來傳遞資料的型別中實作 Interface 可以說是多此一舉,但在 Object-C 中 Interface 是必要的,它定義了這個型別有哪些屬性、方法。

Interface 結構 (TestModel.h)

#import <Foundation/Foundation.h>

@interface TestModel : NSObject {

}

@end
Implementation 結構 (TestModel.m)

#import "TestModel.h"

@implementation TestModel

@end


2012-01-27

#region #pragma mark 寫出好看的程式

Visual Studio

在 Visual Studio 中可以使用 #region 讓區段內的程式碼可以摺疊/展開,MSDN 說明
如果有購買 VS10x Code Map 的話也會顯示在裡面。
善用 #region 的話可以讓程式看起來比較漂亮、舒服,而且程式太長的話也能進行摺疊。

2012-01-26

Cocoa Reflection

在物件導向語言中大部分都支援 Reflection,對筆者來說 Reflection 還算蠻常用到的。
其他 Reflection 相關文章

在 Cocoa 要使用 Reflection 的話要先引用 runtime.h,官方有提供詳細的說明文件 Objective-C Runtime Reference
#import <objc/runtime.h>

2012-01-25

Cocoa iOS App 的 Life Cycle 及通知 Controller 目前 App 的狀態

在開發 iOS App 的時候如果專案選擇 View Application 時 Xcode 會幫我們完成圖形化介面的相關程式,所以一執行就會看到程式的畫面。
在 main.m 中有這樣一段程式用來初始化圖形介面:
int main(int argc, char *argv[])
{
    @autoreleasepool {
        return UIApplicationMain(argc, argv, nil, NSStringFromClass([ProjectAppDelegate class]));
    }
}
啟動之後接下來都交由 ProjectAppDelegate(ProjectAppDelegate.m) 來掌控程式的執行,當使用者按下 Home 扭讓程式進入背景狀態或是把程式從背景叫回來...等 ProjectAppDelegate 都會收到對應的事件。

2012-01-24

Xcode Code Snippet

先前有介紹過 Visual Studio 的 Code Snippet,在 Xcode 中當然也有這項功能,Code Snippet 是 Xcode 4 之後才有的。

假設想要將這段彈出 alert 的程式碼加入 Code Snippet 時只要將程式碼反白,然後拖曳到 Code Snippet library。

2012-01-23

Xcode 設定專案的公司名稱

在 Xcode 中新增檔案時都會有這樣一段預設的註解:
//
//  File Name.h
//  Project Name
//
//  Created by YourName on 12/1/23.
//  Copyright (c) 2012年 __MyCompanyName__. All rights reserved.
//
「__MyCompanyName__」 公司名的替換可以在專案的「Project Document」>>「Organization」變更。

Cocoa 數字轉字串

在 Cocoa 中要將數字轉成字串的話可以用 NSString 的 stringWithFormat,用一個標準的格式將數字帶進去取得 NSString。

底下就是透過 stringWithFormat 將 i 轉成字串 outstring 的程式碼:
int i = 25;
NSString *outstring = [NSString stringWithFormat:@"%d", i];
// outstring = "25"