如果我有一个属性,比如说一个 NSArray,它只会为我的类的每个实例初始化一次,这有什么问题吗:
(在界面中)
@property(strong, nonatomic)NSArray *bubbleArr;
(在实施中)
-(NSArray*)bubbleArr
{
if(!bubbleArr)
{
NSMutableArray *tempBubbArr = [[NSMutableArray alloc] init];
// get filepath for first speech bubble image for page
NSString *speechBubbleImgPath = [[NSBundle mainBundle] pathForResource:
[NSString stringWithFormat:@"speech_%i_0", pageIndex]
ofType:@"png"];
for(int i = 1; speechBubbleImgPath; i++)
{
UIImage *speechBubbleImg = [[UIImage alloc] initWithContentsOfFile:speechBubbleImgPath];
UIImageView *speechBubbleImgView = [[UIImageView alloc] initWithImage:speechBubbleImg];
[tempBubbArr addObject:speechBubbleImgView];
speechBubbleImg = nil;
speechBubbleImgView = nil;
speechBubbleImgPath = nil;
speechBubbleImgPath = [[NSBundle mainBundle] pathForResource:
[NSString stringWithFormat:@"speech_%i_%i", pageIndex, i]
ofType:@"png"];
}
bubbleArr = [[NSArray alloc] initWithArray:tempBubbArr];
tempBubbArr = nil;
}
return bubbleArr;
}
我从未使用过自定义访问器方法,但这似乎是一种干净的设置方法,因此我不必在我的viewDidLoad
或其他地方设置每个属性,也不必担心它是nil
. 我不记得曾经真正遇到过这样做的代码。这是推荐的方法吗?另外,我总是想用它self.bubbleArr
来确保调用这个方法,对吧?