【发布时间】:2026-01-18 20:10:02
【问题描述】:
我正在阅读 Apple 的教程之一(您的第二个 iOS 应用程序)。基本上,您有一个主数据类和一个数据控制器类。控制器类通过创建一个包含它们的数组来操作主要数据对象。
突然出现这个:
"...但是“创建主集合”任务是只有数据控制器对象需要知道的任务。因为这个方法不需要暴露给其他对象,所以你不需要声明它在头文件中。”
原来“主集合”的初始化出现在 .m 文件中作为类扩展名而不是头文件。我们为什么要这样做?直接在头文件中声明初始化方法有什么问题?
数据控制器的头文件:
#import <Foundation/Foundation.h>
@class BirdSighting;
@interface BirdsSightingDataController : NSObject
@property (nonatomic, copy) NSMutableArray *masterBirdSightingList;
- (NSUInteger)countOfList;
- (BirdSighting *)objectInListAtIndex:(NSUInteger)theIndex;
- (void)addBirdSightingWithName:(NSString *)inputBirdName location:(NSString *)inputLocation;
@end
这是对应的.m文件:
#import "BirdsSightingDataController.h"
#import "BirdSighting.h"
@interface BirdsSightingDataController ()
- (void)initializeDefaultDataList; //class extension
@end
@implementation BirdsSightingDataController
...
【问题讨论】:
标签: objective-c class-extensions