uiaccelerometer exc_bad_access تحطم على الجهاز
-
28-09-2019 - |
سؤال
أواجه مشكلة غريبة بعض الشيء في تنفيذ مقياس 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. وهذا سيمنع الكائنات من التعامل حقًا ، ثم يجب أن تحصل على سجلات وحدة تحكم تشير إلى مكان الإفراط في الإصدار.
يمكنك استخدام التشغيل باستخدام أدوات الأداء -> المخصصات بمجرد معرفة أي الكائن الذي يتم إصداره بشكل مفرط ورؤية كل موقع تم فيه استدعاء/إصدار لمراقبة الخلل.