你好,歡迎來到IOS教程網

 Ios教程網 >> IOS編程開發 >> IOS開發綜合 >> IOS開發筆記11-Object-C中的傳遞消息

IOS開發筆記11-Object-C中的傳遞消息

編輯:IOS開發綜合

前言

IOS開發筆記11-Object-C中的傳遞消息,在前一篇例子中傳遞的是一個無參的消息,接著繼續介紹傳遞實參的消息。

實例

#import 

int main(int argc, const char * argv[]) {
    @autoreleasepool {
        // insert code here...
        NSDate *today=[NSDate date];

        NSDate *later=[today dateByAddingTimeInterval:100000];

        NSLog(@"%@",later);
    }
    return 0;
}

以上程序中dateByAddingTimeInterval:方法接受新的NSDate實例和初始NSDate實例的差值。方法帶實參的時候,冒號是構成方法名的一個重要部分。

接下來看看帶多個實參的例子:

#import 

int main(int argc, const char * argv[]) {
    @autoreleasepool {
        // insert code here...

        NSDate *date=[NSDate date];

        NSCalendar *calendar=[NSCalendar currentCalendar];

        unsigned long day=[calendar ordinalityOfUnit:NSCalendarUnitDay inUnit:NSCalendarUnitMonth forDate:date];

        NSLog(@"%lu",day);
    }
    return 0;
}

NSDate對象無法計算某個日期是相應月份中的第幾日,因此我們需要NSCalendar對象,發送一個currentCalendar消息給NSCalendar類來創建一個NSCalendar實例。NSCalendar有一個ordinalityOfUnit:inUnit:forDate: 方法 ,通過它可以獲取更多關於NSDate的信息,因此需要傳入三個實參,所以該方法名包含三個冒號。

什麼叫做消息的嵌套發送,可以看下面的例子:

#import 

int main(int argc, const char * argv[]) {
    @autoreleasepool {
        // insert code here...

        double seconds =[[NSDate date] timeIntervalSince1970];
        NSLog(@"%f",seconds);
    }
    return 0;
}

[[NSDate date] timeIntervalSince1970];這種形式就是消息的嵌套發送。

唯一必須以嵌套的形式連續發送的消息是alloc和init。每個類都有一個alloc類方法,它能夠創建一個新的對象,並返還指向該對象的指針。通過alloc創建出來的對象,必須經過初始化才能使用。每個類也都有一個init實例方法,它用來初始化實例。

#import 

int main(int argc, const char * argv[]) {
    @autoreleasepool {
        // insert code here...
        NSDate *today=[[NSDate alloc] init];
        NSCalendar *calendar=[NSCalendar currentCalendar];

        unsigned long day=[calendar ordinalityOfUnit:NSCalendarUnitDay inUnit:NSCalendarUnitMonth forDate:today];

        NSLog(@"%lu",day);
    }
    return 0;
}

使用以上方法和發送date消息創建NSDate對象沒有區別。NSDate的init方法會將NSDate對象初始化為當前的日期和時間,就像date方法那樣。

nil和id

在Object-C中,nil是值為0的指針。同時向nil發送消息,什麼事情也不會發生。

當聲明指向對象的指針時,通常都會明確地寫出相應對象的類,但是在編寫程序時,很可能會碰到聲明指針時並不知道所指對象的類型,因此,可以使用id類型來表示。

id student;

id類型的含義是:可以指向任意類型Object-C對象的指針。

  1. 上一頁:
  2. 下一頁:
蘋果刷機越獄教程| IOS教程問題解答| IOS技巧綜合| IOS7技巧| IOS8教程
Copyright © Ios教程網 All Rights Reserved