Learn Objectvie-C on the Mac 2nd Edition 筆記

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()

相關文章
相關標籤/搜索