gpt4 book ai didi

iphone - 访问器/ getter 和延迟初始化

转载 作者:行者123 更新时间:2023-12-03 20:35:34 24 4
gpt4 key购买 nike

我有一个关于覆盖自动生成的访问器方法的问题。以下行不通(我相信),因为每个 getter 都引用另一个 getter。是否存在访问器方法不应使用其他访问器方法的规则,或者您是否只需要单独注意这些情况?

-(UIImage *) image{

if(image == nil){
if(self.data == nil){
[self performSelectorInBackground: @selector(loadImage) withObject: nil]
}else{
self.image = [UIImage imageWithData: self.data];
}
}

return image;
}

-(NSData *) data {

if(data == nil){
if(self.image == nil){
[self performSelectorInBackground: @selector(loadData) withObject: nil]
}else{
self.data = UIImageJPEGRepresentation(self.image, 0.85);
}
}

return data;
}

我必须强调,这里提供的图像使用只是一个示例,关于在这个特定示例中做什么的想法不如一般情况那么重要。

最佳答案

首先,不要为了自己的利益而太聪明。如果您想克服某些瓶颈,请首先测量并确保它确实存在。我相信 UIImageNSData 都会进行一些内部延迟加载,因此您的代码可能基本上毫无用处。其次,即使您真的想手动执行类似的操作,也请尝试将缓存代码拆分到一个单独的类中,这样就不会污染主类的代码。

没有关于访问器的规则(至少据我所知没有),因为人们不会在访问器中进行太多的延迟加载。有时我会陷入由惰性 [UIViewController loadView][UIViewController view] 组合引起的无限循环,但仅此而已。

关于iphone - 访问器/ getter 和延迟初始化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3706590/

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