2016-11-13 20 views
-2

我剛開始學習Objective-C,並試圖理解下面的代碼。有3個文件:FindLargestNumber.h,FindLargestNumber.m和main.m.Objective-C和@Interface文件中的數組

在FindLargestNumber.h文件中,我想知道是否有人能解釋我@interface NSMutableArray (FindLargestNumber)的含義。我期待看到像@interface FindLargestNumber: NSObject那樣的東西。

#import <Foundation/Foundation.h> 

@interface NSMutableArray (FindLargestNumber) 

- (id)largest:(NSMutableArray *)array; 

@end 

------------------------------------------------------------ 

#import "FindLargestNumber.h" 

@implementation NSMutableArray (FindLargestNumber) 

- (id)largest:(NSMutableArray *)array { 
    id currentLargest = @0; 
    for (id item in array) { 
     if (item > currentLargest) { 
      currentLargest = item; 
     } 
    } 
    return currentLargest; 
} 

@end 

------------------------------------------------------ 

#import <Foundation/Foundation.h> 
#import "FindLargestNumber.h" 

int main(int argc, const char * argv[]) { 
    @autoreleasepool { 
     NSMutableArray *array = [NSMutableArray arrayWithObjects: @1, @4, @743, @77, @0, nil]; 
     //NSLog(@"%@", array); 
     NSLog(@"The largest value is %@", [array largest:array]); 
    } 
    return 0; 
} 
+0

https://developer.apple.com/library/content/documentation/Cocoa/Conceptual/ProgrammingWithObjectiveC/CustomizingExistingClasses/CustomizingExistingClasses.html – Kreiri

+0

[OffTopic]其實找到一個數組的最大價值的最佳途徑是KVC:' NSArray * array = @ [@ 1,@ 4,@ 743,@ 77,@ 0];''NSLog(@「最大值爲%@」,[array valueForKeyPath:@「@ max.self」]); ' – vadian

回答

0

NSMutableArray類(已存在)正在通過添加名爲largest:的新方法進行擴展。在Objective-C中,類使用類別進行擴展,這裏的類別名爲FindLargestNumber。詳情請參閱https://developer.apple.com/library/content/documentation/General/Conceptual/DevPedia-CocoaCore/Category.html

+0

糟糕的術語。一個類通過子類擴展,而不是類。分類將新方法添加到現有的類而不需要子類。 – rmaddy

+0

從我在答案中引用的Apple文檔中:「類別必須導入它擴展的類的接口文件:」術語沒問題。 –

+0

@Mark Smith,謝謝馬克! – Piet