在此类的SeismicXMLAppDelegate实现文件中,它们具有以下代码:
// forward declarations
@interface SeismicXMLAppDelegate ()
@property (nonatomic, retain) NSURLConnection *earthquakeFeedConnection;
@property (nonatomic, retain) NSMutableData *earthquakeData; // the data returned from the NSURLConnection
@property (nonatomic, retain) NSOperationQueue *parseQueue; // the queue that manages our NSOperation for parsing earthquake data
- (void)addEarthquakesToList:(NSArray *)earthquakes;
- (void)handleError:(NSError *)error;
@end
为什么他们在实现文件中有第二个接口?
答案 0 :(得分:2)
这是Objective-C中的扩展(或匿名类别)
您可以添加属性,更改其属性并声明此示例中的新方法。 为什么不在接口文件中执行此操作? 好吧,出于设计目的,可能有很多原因,以免暴露某些属性等等。
例如,即使您myAppDelegate.earthquakeData
,也无法从RootViewController.m
致电#import "SeismicXMLAppDelegate.h"
。
您只能从earthquakeData
类内部访问SeismicXMLAppDelegate
属性。
您可以在此处详细了解类别和扩展程序:The Objective-C Programming Language