A-Live がコメントで提案しているように、遅延読み込み手法を使用して、実際に必要なときに配列が初期化されるようにすることができます。プロパティ ゲッターでは、最初に配列が初期化されているかどうかを確認します。そうでない場合は、初期化してから返します。
例
注: これは大雑把でテストされていない例であり、ARC を使用するかどうかによっては、必要な変更を加える必要がある場合があります。
MyViewController.h
@interface MyViewController : UITableViewController
{
NSArray *_myArray;
}
@property (nonatomic, readonly) NSArray *myArray;
-(void)doSomething;
@end
MyViewController.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