您可以使用 A-Live 在评论中建议的延迟加载技术,这样您的数组将在您实际需要时被初始化。这个想法是,在属性 getter 中,您首先检查您的数组是否已初始化。如果没有,初始化然后返回它。
例子
注意:这是一个粗略且未经测试的示例,您可能需要根据是否使用 ARC 进行必要的更改。
MyViewController.h
@interface MyViewController : UITableViewController
{
NSArray *_myArray;
}
@property (nonatomic, readonly) NSArray *myArray;
-(void)doSomething;
@end
我的视图控制器.m
@interface MyViewController()
-(NSArray *)fetchArrayData;
@end
@implementation MyViewController
@synthesize myArray = _myArray;
#pragma mark - Property Getter
-(NSArray *)myArray
{
if (_myArray==nil)
_myArray = [[self fetchArrayData] retain];
return _myArray;
}
#pragma mark - Cleanup
-(void)dealloc
{
[_myArray release];
[super dealloc];
}
#pragma mark - Instance Methods
-(void)doSomething
{
NSLog(@"myArray: %@", self.myArray);
}
#pragma mark - Private Methods
-(NSArray *)fetchArrayData
{
NSArray *arrayData = [NSArray arrayWithObjects:@"Apples", @"Oranges", nil];
return arrayData;
}
@end