مشكلات الذاكرة Cllocation
-
25-09-2019 - |
سؤال
لدي بعض مشكلات الذاكرة مع cllocation.
CLLocation *annotation = [[CLLocation alloc] initWithLatitude:[[tempDict objectForKey:@"lat"] doubleValue] longitude:[[tempDict objectForKey:@"lon"]doubleValue]];
CLLocation *item2 = [[CLLocation alloc] initWithLatitude:[newLatString doubleValue] longitude:[newLongString doubleValue]];
cell.detailTextLabel.text = [NSString stringWithFormat:@"%.1f km",[item2 distanceFromLocation:annotation]/1000];
[annotation release];
[item2 release];
لذلك حاولت القيام بذلك ، لكنني أدركت أنه لا يمكنك تعيين إحداثيات التعليق التوضيحي.
CLLocationCoordinate2D tempCoordinate = annotation.coordinate;
tempCoordinate.latitude = [[tempDict objectForKey:@"lat"] doubleValue];
tempCoordinate.longitude = [[tempDict objectForKey:@"lon"] doubleValue];
annotation.coordinate = tempCoordinate;
هل هناك حل بديل هذا؟ لا أريد أن أكون تخصيصًا/إصرار على cllocation في كل مرة تسمى CellForrowatIndexPath ..
المحلول
كائنك الناتج هو NSString - فقط قم بإنشاء فئة تحتوي على NSString ، وكذلك المراجع/Ivars للبيانات المتوسطة عند الضرورة. ثم باستخدام المصطلح المراقب ، ما عليك سوى تحديث الخلايا عندما تتغير السلسلة (تصميمها بحيث تعتمد السلسلة على الإحداثيات). من المحتمل أن تقوم بإنشاء فئة تأخذ مجموعة من الوسائط عند التهيئة (على سبيل المثال الإحداثيات) ، وإنشاء NSString أثناء التهيئة ، ثم الرجوع إلى النتيجة إذا لم تتغير بياناتك أبدًا. يعتمد الأمر حقًا على البيانات التي تتوقعها سوف تتحول ، وعلى أي تردد.
نصائح أخرى
لا أريد أن أكون تخصيصًا/إصرار على cllocation في كل مرة تسمى CellForrowatIndexPath ..
لما لا؟ هل تعلم أنها تسبب مشاكل في الأداء؟ أنت تصدرهم على الفور ، لذلك لا يشغلون ذاكرة إضافية. يبدو Cllocation وكأنه فئة خفيفة الوزن للغاية ، ويتم تحسين وقت تشغيل Objective-C بشكل كبير ، لذلك من المحتمل أن تخصيص / init بسرعة كبيرة. حتى ترى مشكلة التمرير / perf / الذاكرة ، سأذهب مع ما ينجح ويسهل الحفاظ عليه.
التحسين المبكر هو جذر كل الشر - دونالد نوث