IOS學習之路--OC的基礎知識


  • 運行過程

1.編寫OC程序:.m源文件

2.編譯.m文件為.o目標文件:cc -c xxxx.m

3.鏈接.o文件為a.out可執行文件:cc xxxx.o -framework Foundation

4.執行a.out文件:./a.out

  • #import 的功能跟#include一樣,只是更好用,他避免了頭文件的多次包含
  • 為了能使用OC的特性, 一定要引入#import <Foundation/Foundation.h>
  •  類定義// @implementation 和 @end

 

// 設計(定義)一個車類
// @implementation 和 @end
// : NSObject :讓Car這個類具備創建對象的能力(繼承)
@implementation Car : NSObject
// 這個大括號里面只能寫所有的屬性
{
    // @public:讓對象的屬性可以被外面的指針訪問,默認是私有的
    @public
    int wheels; // 默認基本數據類型的初始值都是0
}

// 在@end的前面,大括號{}外面寫行為
// 給Car對象增加一個行為(方法)
// 給對象增加一個行為,必須以減號 - 開頭, 給類增加一個對象是+。
// OC方法中的小括號()只是主要擴住類型
- (void) run
{
    // 訪問車子對象內部的屬性,直接用屬性名就可以
    NSLog(@"%i個輪子,%f時速的車子跑起來了!", wheels, speed);
}
+ (Void) test
{
    // 這是類方法。上面那個-號的是對象方法。
}

@end

 

 

 

  •  類調用
    // 在OC中想執行一些行為,首先寫個 [行為執行者  行為名稱]
    
    // new這個行為執行完畢后,會返回這個對象的地址
    Car *c = [Car new];
    // 給c指向的車子對象的wheels屬性賦值
    c->wheels = 4; // 等價於 (*c).wheels = 4
    
    // 給指針變量c指向的對象“發送”一條run消息,讓這個對象執行run這個行為
    [c run];
  •  聲明&實現
// 聲明一個類
/*
 1.類名
 2.繼承了NSObject
 3.聲明屬性
 4.聲明方法(僅僅是聲明,不需要實現)
 5.實現和聲明中的成員變量不能同名
 */
@interface Book : NSObject
{  
    @public
    double price;// 這些屬性稱為對象的“成員變量”
}

// 聲明一個方法(行為)
- (void)reng;

@end
// 定義(實現)一個類
/*
 只用來實現@interface中聲明的方法
 */
@implementation Book 

- (void)reng
{
    NSLog(@"%f的書被扔了!", price);
}
  •  多參數的聲明和使用
- (void) fly
{
    NSLog(@"i can fly, my age is %d", age);
}

// 一個參數對應一個冒號
// 冒號也是方法名的一部分
- (void)fly:(int)howHeight
{
    NSLog(@"i can fly, my age is %d, my height %d", age, howHeight);
}

// 多個參數的情況。  withTime是方法名的一部分.times是參數名稱
- (void)fly:(int)howHeight :WithTime(int)times
{
}
    Person *p = [Person new];
    [p fly];
    [p fly:99];
    [p fly:99 WithTime:10];
  •  OC對象方法和函數的區別

  1. 函數屬於整個文件,在文件的任意地方都能調用;對象的方法只屬於這個對象,只有對象才能調用

  2. 對象的方法只能聲明在@infterface 和@end 之間,對象方法只能實現在@implementation 和@end之間。

   函數的聲明和定義可以寫在任意地方,函數不能歸某個類所有,只屬於某個文件。

  • 消息機制

  給指針變量所指向的對象發送一條消息(消息名稱就是方法名),讓那個對象執行相應的方法(動態)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM