2012-09-24 32 views
6

Tôi là một newbie, cố gắng để có một ứng dụng phần mềm miễn phí cập nhật lần cuối vào năm 2008 và kể từ khi (rõ ràng) bị bỏ rơi bởi các lập trình viên, những người đã không trả lời email của tôi, và cả hai cập nhật nó cho MacOS hiện tại và cũng tạo ra một phiên bản cho iPhone. Tôi tưởng tượng điều này sẽ là một quá trình lâu dài và hơi ác mộng nhưng tôi rất mong được học hỏi.newbie cố gắng hiểu nhiều @interface trong .h file

Ngay bây giờ tôi đang ở giai đoạn đầu, và tôi nhìn vào các tập tin GeniusPair.h sau trong bản gốc:

#import <Foundation/Foundation.h> 

@class GeniusItem; 
@class GeniusAssociation; 

extern const int kGeniusPairDisabledImportance; 
extern const int kGeniusPairMinimumImportance; 
extern const int kGeniusPairNormalImportance; 
extern const int kGeniusPairMaximumImportance; 

@interface GeniusPair : NSObject <NSCoding, NSCopying> { 
GeniusAssociation * _associationAB; //!< Stats for standard learning mode directional relationship. 
GeniusAssociation * _associationBA; //!< Stats for Jepardy style learning mode directional relationship. 

NSMutableDictionary * _userDict; 
} 

+ (NSArray *) associationsForPairs:(NSArray *)pairs useAB:(BOOL)useAB useBA:(BOOL)useBA; 

- (id) initWithItemA:(GeniusItem *)itemA itemB:(GeniusItem *)itemB userDict:(NSMutableDictionary *)userDict; 

//various other methods declared 

@end 


@interface GeniusPair (GeniusDocumentAdditions) 

- (BOOL) disabled; 
//various other methods declared 

@end 


@interface GeniusPair (TextImportExport) 

- (NSString *) tabularTextByOrder:(NSArray *)keyPaths; 
//various other methods declared 

@end 

Câu hỏi của tôi là (câu hỏi): Tại sao có nhiều hơn một trong một tệp .h? Sự khác biệt giữa @interface GeniusPair : NSObject@interface GeniusPair (TextImportExport) là gì? Những gì có một @interface tiếp theo là một cái gì đó trong ngoặc đơn làm vs @interface theo sau là dấu hai chấm?

Cảm ơn bạn rất nhiều vì đã giúp bạn giải thích.

Trả lời

8

Nó được gọi là loại. Các danh mục rất hữu ích cho việc mở rộng các lớp (khi bạn không có mã nguồn của chúng, như các lớp UIKit hoặc Foundation) hoặc tách chức năng mở rộng/nâng cao của một lớp khỏi các phương thức cơ sở của nó (đây là trường hợp bạn gặp phải).

Chúng cũng có thể được sử dụng để mô phỏng các phương thức riêng khi được sử dụng trong ngữ cảnh triển khai (ngược với khai báo) trong tệp .m.

Tìm hiểu thêm về chủ đề tại Apple Developer..

+1

Tôi cũng muốn khai báo giao diện ở đầu tệp .m để thực hiện các phương thức riêng tư giả, vì chúng sẽ chỉ được hiển thị bởi chính lớp đó chứ không phải bởi các lớp khác (tất nhiên chúng vẫn có thể gọi được) một lớp bên ngoài bây giờ họ đang có). – Simon

+0

@Simon yep, tôi cũng vậy, sẽ thêm điều đó. –

+0

Cảm ơn bạn rất nhiều! –

Các vấn đề liên quan