iOS 앱에서 ARC를 사용하고 있습니다. 알고리즘을 몹시 순진하고 낭비적인 시간의 77 %가 objc_retain
및 objc_release
에 머물러 있다고해도 아래의 방법을 프로파일 링했습니다. 나는 그것이 NSArray
에서 유닛을 가져 오는 라인까지 내려야한다고 생각하고 ARC는 매번 오브젝트를 유지 한 다음 해제 할 때주의해야한다.ARC를 보유/해제하면 속도가 느려집니다
정보에 입각 한 조언을 찾고 있는데 어떻게 우아하게 고칠 수 있습니까?
-(CGFloat)getUncertaintyForUnits:(NSArray*)units Position:(MKMapPoint)position Zoom:(MKZoomScale)zoomScale {
CGFloat closest = MAXFLOAT;
for (int i = 0; i < [units count]; i++) {
Unit *units = (Unit*)[units objectAtIndex:i];
CGFloat distance = [self distanceBetweenMapPoints:unit.mapPoint And:position];
if (distance < closest) {
closest = distance;
}
}
CGFloat max = 100/zoomScale;
return (1. - closest/max) * 0.9;
}
단지 참고 사항 : [명명 규칙] (http://developer.apple.com/library/ios/#documentation/Cocoa/Conceptual/CodingGuidelines/CodingGuidelines.html#//apple_ref/doc/uid/10000146i))는'distanceBetweenMapPoints : And :'는 꽤 나쁜 이름이라고 말할 것입니다. 'camelCase : forAllParameters :'입니다. '및 ... '은 특정 동작이 트리거 될 수 있음을 나타냅니다. 대신에 with ... :를 사용하라는 메시지가 표시됩니다. 당신의 경우에 가장 좋은 이름은 다음과 같습니다 :'distanceBetweenMapPoint : position :' – vikingosegundo
고마워요, 다음 번에 이름 지정 규칙을 읽어 보겠습니다 :) –