gpt4 book ai didi

ios - 如何在 iOS UITableViewController 中初始化一个属性

转载 作者:可可西里 更新时间:2023-11-01 05:04:32 26 4
gpt4 key购买 nike

我正在开发一个 UITableViewController

@interface GinkgoDeliveryOrdersTableViewController : UITableViewController

@property PFQuery * query;
@property NSArray * products;

@end

我应该如何初始化这两个属性?目前,我正在进行惰性初始化:

@implementation GinkgoDeliveryOrdersTableViewController

@synthesize query = _query;
@synthesize products = _products;

- (void) initQuery {
_query = [PFQuery queryWithClassName:@"_Product"];
}

- (void) initProducts {
if(! _query)
[self initQuery];
_products = [_query findObjects];
}

因此,每次我想使用这两个属性时,我都必须这样做:

if(! self.products)
[self initProducts];

if(! self.query)
[self initQuery];

我觉得我在这里做错了什么。有没有更清洁的方法来做到这一点?非常感谢!

最佳答案

如果值不是从外部设置的,那么它们不应该是读/写属性。将它们设为只读并在“getter”方法中使用延迟加载。

@interface GinkgoDeliveryOrdersTableViewController : UITableViewController

@property (nonatomic, readonly) PFQuery * query;
@property (nonatomic, readonly) NSArray * products;

@end


@implementation GinkgoDeliveryOrdersTableViewController

@synthesize query = _query;
@synthesize products = _products;

- (PFQuery *)query {
if (!_query) {
_query = ...
}

return _query;
}

products getter 做同样的事情。

请注意,在您的原始代码中不需要 @synthesize 行,但在这个更新的代码中需要它们,否则由于显式 getter 方法,ivar 不会自动生成。

关于ios - 如何在 iOS UITableViewController 中初始化一个属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20202077/

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