gpt4 book ai didi

ios - 如果我有一个 UITableViewController 类,我应该在哪里初始化它的实例变量?

转载 作者:行者123 更新时间:2023-11-28 22:37:33 26 4
gpt4 key购买 nike

如果我将它放在 viewDidLoad 中,它会起作用,但我无法想象这是最好的地方。我试着把它放在这里:

- (id)initWithStyle:(UITableViewStyle)style
{
self = [super initWithStyle:style];
if (self) {
// HERE
}
return self;
}

但这没有用。我应该把它放在哪里?

在这个例子中,我正在谈论为这个类创建 NSMutableArray(分配和初始化它)。

最佳答案

您可以按照 A-Live 在评论中建议的那样使用延迟加载技术,这样您的数组将在您实际需要时进行初始化。这个想法是,在属性 getter 中,您首先检查您的数组是否已初始化。如果不是,则初始化然后返回。

示例

Note: This is a crude and untested example, and you may need to make the necessary changes depending on whether or not you use 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

关于ios - 如果我有一个 UITableViewController 类,我应该在哪里初始化它的实例变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15507422/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com