我在项目中有这些巨大的重复代码块,我试图将它们缩小。拿这个例子:
self.Day11.delegate = (id)self;
self.Day12.delegate = (id)self;
self.Day13.delegate = (id)self;
self.Day14.delegate = (id)self;
self.Day15.delegate = (id)self;
self.Day16.delegate = (id)self;
self.Day17.delegate = (id)self;
self.Day18.delegate = (id)self;
self.Day19.delegate = (id)self;
我想做的是让我可以使用for循环或类似的东西来缩小它:
for (int i = 1 ; i<=9; i++) {
NSString *var = [NSString stringWithFormat:@"Day1%d",i];
self.var.delegate = (id)self;
}
我知道这不起作用是否有可能做这样的事情?
答案 0 :(得分:4)
不,不,不。
@property (nonatomic,strong) NSArray *arrayOfDays;
现在摆脱所有那些日子对象并用self.arrayOfDays
填充所有那些单独的日期对象......
则...
for(int i=0; i<[self.arrayOfDays count]; ++i) {
[[self.arrayOfDays objectAtIndex:i] setDelegate: self];
}
甚至更好,如果所有这些对象属于同一类型(我假设它们属于Day
类型),我们可以这样做:
for(Day *day in self.arrayOfDays) {
day.delegate = self;
}
最佳(根据Daij-Dan的评论):
[self.arrayOfDays setValue:self forKeyPath:@"delegate"];