私は作業中のコードを持っており、より多くのデータが渡されるとかなりロードされるため、これからパフォーマンスを向上させたいと考えています。しかし、私はそれについて他に何ができるかわかりません。
入力: logUnits の配列。それぞれに "2013-01-16 15:13:00 Hello" のようなログ イベントのビューと時刻の配列が含まれます。この配列には、ログ イベント (2013-01-02,2013) がある時刻のみが含まれます。 -01-09 など)
出力: 各ビューに同じ日のログ ユニットが含まれるビューの配列。
また、ログ ユニットをイベント タイプでフィルタリングする必要がある場合もあります。
これが私がこれをした方法です。
NSMutableArray *views = [[NSMutableArray alloc] initWithCapacity:times.count];
@autoreleasepool {
for(int x = 0; x != times.count; x++)
{
UIView *foo = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 320, 400)];
foo.backgroundColor = [UIColor clearColor];
int f = 0;
int h = 0;
for(int i = 0; i != objectArray.count; i++)
{
@autoreleasepool
{
LogUnit *unit = [objectArray objectAtIndex:i];
if([[times objectAtIndex:x] isEqual:[unit realTime]])
{
if(![[foo subviews] containsObject:unit.view]) // Look if unit was already added
{
NSString *number = [NSString stringWithFormat:@"SortLog%i ",[[NSUserDefaults standardUserDefaults] stringForKey:@"ObjectNumber"].intValue];
NSString *comp = [[NSUserDefaults standardUserDefaults] stringForKey:number];
if([[unit status] isEqualToString:comp] || [comp isEqualToString:NULL] || comp == NULL)
{
if([unit getEvent] != NULL)
{
unit.view.frame = CGRectMake(unit.view.frame.origin.x, f * unit.view.frame.size.height + 30, unit.view.frame.size.width, unit.view.frame.size.height);
[foo addSubview:unit.view];
f++;
h = unit.view.frame.size.height * f;
}
}
}
}
}
}
foo.frame = CGRectMake(0,0, 320, h + 30 );
h = 0;
[views addObject:foo];
}
これで最悪のことはループインループであり、外側のループごとにすべてのlogUnitを再実行する必要があると思います。しかし、他にどのようにこれを行うことができるかわかりません。「時間が等しい[単位リアルタイム]の選択単位」のような呼び出し方があるかもしれません。