OC語言基礎內容 類的定義 第一個OC

OC基礎day01

第一個OC程序

  • OC與C的基本區別

    • C語言的源文件 XXX.c
    • OC語言的源文件 XXX.m
    • 在C語言中 用printf打印信息 OC中用NSLog()打印信息
  • OC中的改變

    • OC中 引入頭文件的預處理指令 是 #import
    • C語言中多次包含 #include<”文件名”>不會有問題的
      #ifndef xxx_h
      #define xxx_h
      #include “頭文件.h”
      #endif
    • 因爲在C中 通過條件編譯指令,來防止重複包含
    • 在OC中 #import指令 不需要條件編譯來防止重複包含
  • 格式
    #import “自己的文件”
    #import <系統提供的文件>

Foundation 框架

  • 框架: 類似於 C語言中庫文件(#include

NSLlog 函數

* NSLog函數是 printf 函數基本上一樣的函數*
* NSLog函數 具有和printf 函數基本一樣的功能
* NSLog函數 打印C中的字符串的時候純英文沒有問題 但是不能有中文
* 打印舉出數據類型 一些常量 變量 都是一樣
* 增強體現在
* 2016-08-14 10:28:03.946 day01課上代碼[7550:655818] name = abdcef
* 自動智能換行:如果輸出時 不加’\n’,會自動換行,如果想多換行,那麼必須是兩個’\n’
* 輸出一些狀態信息
輸出時間信息,精確到毫秒 ” 2016-08-14 10:28:03.946
輸出當前的Target名字 “day01課上代碼
[7550:655818] “[進程號:線程]
* NSLog函數的格式
* NSLog(@”格式控制字符串”,要打印的變量或者常量);
NSLog函數還可以打印 OC中特有的一些數據類型

NSString字符串

  • OC中的字符串的寫法
    “abcd” C語言中的字符串
    @”abcd” OC語言的字符串
  • 在IC中有一個專門的類型用來白村 IC中字符串的類型
    • NSString *str = @”abcdef”;
  • 打印OC中的字符串 用 %@ !!!!

  • oc 的其他基礎語法

    • 在OC中國有大量的名字都是以NS開頭的
    • @符號的作用
      • 在C字符串前加@ 就是變成了OC 字符串
      • OC中新增的關鍵字 大部分都是以@開頭的
        • @interface
        • @implementation
        • @end
  • 註釋: OC註釋和C註釋完全一樣
  • OC中定義C函數的方式和語法一模一樣
  • * OC程序的編譯連接流程*
    • 創建文件xxx.m 寫代碼
    • 編譯 —> cc -c xxx.m
    • 鏈接 —> cc xxx.o -framework Foundation
    • 運行 ./a.out

BOOL類型變量

  • C語言中數據類型
    • 基本數據類型
    • 結構體類型
    • 指針類型
    • 空類型void
    • typedef定義的數據類型
  • OC中特有的數據類型
    • BOOL類型
      • typedef signed char BOOL;
      • BOOL rel = YES/NO;
      • ES 代表真的 NO代表假的
    • Boolean類型
      • typedef unsigned char Boolean;
      • Boolean rel = true/false;
      • true 代表真 false 代表假
    • Class類型
      • 類 類型
    • nil
      • 和C中的NULL很相似
    • SEL類型
      • 這個類型變量 可以保存一個方法
    • block類型
      • 這個樂行的變量 可以保存一段代碼

面向對象 和麪向過程

  • 面向過程
    • C語言是一個面向過程的語言 每一步都親力親爲
  • 面向對象
    • 特徵:
      • 抽象
      • 封裝
      • 繼承
      • 多態
    • 面向過程編程和麪向對象編程只能解決問題的兩種不同的思路,沒有誰有事誰劣勢
    • 面向過程強調的是按照解決問題的邏輯,一步步實現 ,注重把控每一步驟的細節
    • 面向對象強調的是 解決問題找一個對應擅長解決這類問題的東西
  • 如何利用對象
    • 遇到問題 不要一步一步去實現
    • 框架 Foundation AVFoundation CoreGraphics
    • 有 直接用
    • 沒有自己 寫框架

類 和對象

  • 類: 具有相同屬性的,共同行爲的事物
  • 對象: 類中的一個個體 一個具體的存在
  • 類與對象的關係:
    • 一個類有多個對象
  • 在現實生活中 現有對象在有的類
  • 在代碼中 先有的類 通過類可以創建對象
    • 通過類創建對象的過程叫做 實例化
  • * 如何設計一個類*
    • 設計類
      • 類名
      • 屬性
      • 行爲(方法)
1.定義一個類: 類的聲明(.h) + 類的實現(.m)

類的聲明:
    @interface 類名 : NSObject
    {
        //類的屬性,以數據類型 變量名
        數據類型1 變量名1;
        數據類型2 變量名2;
        //注意:屬性的變量名 必須一定要以"_"開頭


    }
    //這裏寫行爲(方法)
    @end

類的實現:(什麼都沒有 你也要寫實現)
    @implementation 類名

    @end

常見錯誤

  1. 類的聲明和類的實現的中,類的名字一定要一致
  2. 一個類的屬性必須要寫在@interface—@end 之間的一對花括號中 “寫在花括號外面也不行

  3. 屬性必須要以下劃線開頭,這是必須遵守的規範,因爲後面所有的知識點的引申都是在這個基礎上進行的

  4. 用指針指向一個對象的時候,要麼和類名在一起,要麼和指針變量在一起,要麼放在類名和指針變量之間.

  5. 平常所說的對象名實際上是一個存儲了對象的地址的指針變量,既然是變量,就遵守變量的命名規則.

    1. 規定:以字母或者下劃線開頭,英文字母/數字/_/$組成的
    2. 規範:駝峯命名法
  6. 訪問對象的屬性的時候是可以用 (*對象名).屬性 這種語法格式,但是不要這樣用,因爲大家都不使用這種方式.

  7. 通過對象名訪問對象的屬性的時候注意正確的語法格式 對象名->屬性名,注意屬性名要添加下劃線

  8. 默認情況在類的外部不允許直接通過對象名訪問對象的屬性,此時不要驚恐,只需要在定義屬性的時候添加@public修飾

  9. 給對象的屬性賦值的時候,實際上是給對象內部某個類型的變量賦值,此時要注意做到類型的匹配.

  10. 在類的聲明中,屬性只是一種描述,屬性只有在對象被創建出來之後纔有意義.所以在類的外部訪問屬性,必須要通過對象名來訪問

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章