سؤال

أواجه مشكلة غريبة بعض الشيء في تنفيذ مقياس Uiaccelerometer. لديّ uitableViewController حيث لا أريد استخدام uiaccelerometer ، ولكن بعد الضغط على الصفوف ، أريد تنشيط واحد داخل UiviewController ، كل شيء على ما يرام عندما أستخدم المحاكاة ، ولكن عندما أستخدم جهاز iPhone 3G لاختباره ، حصلت على exc_bad_access عن طريق الضغط على زر العودة.

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {


     ShakeControl *percView = [[ShakeControl alloc] init];
     // ...
     // Pass the selected object to the new view controller.
     [self.navigationController pushViewController:percView animated:YES];
     [percView release];


}

إنه يعمل بشكل جيد عندما أقوم بتعطيل [إصدار Percview] ؛ ، لكنه لا يبدو مثل الحل. أي فكرة سيكون موضع تقدير.

التنفيذ السيطرة على الهز:

- (void)viewDidLoad {
    [super viewDidLoad];
    [[UIAccelerometer sharedAccelerometer] setUpdateInterval:1.0 / kUpdateFrequency];
    [[UIAccelerometer sharedAccelerometer] setDelegate:self];

}

- (void)viewDidUnload {
    [super viewDidUnload];

    [[UIAccelerometer sharedAccelerometer] setDelegate:nil];
}

شكرًا

هل كانت مفيدة؟

المحلول

ال viewDidUnload سيتم استدعاء الطريقة فقط في حالة محددة ، مثل تحذير الذاكرة. يجب عليك إزالة المندوب في dealloc جدا.

نصائح أخرى

حاول إطلاقه بعد رفضه ، لست متأكدًا مما إذا كان PushViewController يحتفظ.

يمكنك تعيين متغيرات البيئة NSZombiSENABLID و NSAUTORELEASEFREEDOBJECTCHECKENUPED بقيمة 1. وهذا سيمنع الكائنات من التعامل حقًا ، ثم يجب أن تحصل على سجلات وحدة تحكم تشير إلى مكان الإفراط في الإصدار.

يمكنك استخدام التشغيل باستخدام أدوات الأداء -> المخصصات بمجرد معرفة أي الكائن الذي يتم إصداره بشكل مفرط ورؤية كل موقع تم فيه استدعاء/إصدار لمراقبة الخلل.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top