Chapter 1
Apple’s Cocoa (for OS X) 和 Cocoa Touch (for iOS) toolkits 都是用 Objective-C寫的.ide
Chapter 2函數
(1) .m 表明 「messages」的縮寫ui
.m -> Object-C compiler .c -> C compiler .cpp -> C++ compiler
(2)在 Objective-C中, #import 保證了每一個頭文件只被包含一次,如同c中的#ifdef頭文件衛士的做用同樣。spa
#import <> // 系統頭文件code
#import " " // 用戶自定義頭文件blog
(3)NSLog()如同 C中的printf(),不過增長了時間和日期戳,並自動在行尾加了「\n"換行符。接口
@(" ")表示" "中的字符串被當作一個NSString單元來處理。在NSLog中若是直接使用了C風格的字符串」「而缺乏@(),則在編譯時獲得一個warning,運行時會crash。ip
(4)BOOL 類型ci
在Objectvie-C中,BOOL類型是其實是一個signed char的typedef,所以不只能夠用YES(值=1)和NO(值=0)表示C中的true和false,並且能夠存放其餘的值。這裏會有一個易錯點:若是將一個short或int等類型的值賦給BOOL變量後,會截斷末尾的8位,若是這末尾8位值恰好爲0(如8960,其十六進制值爲 0X2300),此值的BOOL值就是0,即NO,而不是非NO了。字符串
Chapter 3
(1)計算機科學的核心思想:Indirection。Instead of using a value dirctly in your code, use a pointer to the value; Instead of doing something by yourself, ask another person to do it.
(2)一個文件讀取示例:
#import <Foundation/Foundation.h> int main(int argc, const char * argv[]) { if(argc == 1) { NSLog (@"You need to provide a file Name"); return (1). } FILE *wordFile = fopen(argv[1], "r"); // argv[0] is the code file path char word[100]; while(fgets(word, 100, wordFile) { // strip off the trailing \n word[strlen(word) - 1] = '\0'; NSLog(@"%s kis %lu characters long", word, strlen(word)); } fclose(wordFile); return(0). } // main
(3)在Objective-C中,方法調用採用的是中綴表示法(infix notation),如
[circle setFillColor: kRedColor];
若是一個方法無參數,則無冒號和參數列表;若是有參數,則有冒號:
- (void) scratchTheCat; // 無參數 - (void) scratchTheCat: (CatType) critter; // 有參數
Chapter 6
(1)Objective-C類的代碼能夠分爲2個部分:
1>. @interface 部分 .h 文件
#define part
extern global variables;
@interface XX : YY { public structs; } public method declarations. @end
提供了該類的公共接口聲明。
2>. @implementation 部分 .m文件
@interface XX
{
private structs;
}
@end
@implementation XX private self-used methods @end
提供了該類的實現以及內部函數。
若是以.mm爲文件後綴,則表示使用了Objective -C++,即便用C++和Objective-C混合代碼。
(2) 頭文件中,使用類前置聲明,以免交叉編譯出錯:
@class XYX;
chapter 8 User Interface Kit(UIKit)
(1) Foundation framework 類:
NSString
NSArray
NSEnumerator
NSRange
NSNumber
(2) CoreFoundation (Foundation framework build on it )
函數名或變量名以」CF「開頭:
CGSize
CGPoint, CGPointMake()
CGRect, CGRectMake()