الافراج عن كائنات عند استخدام UINavigationController

StackOverflow https://stackoverflow.com/questions/401389

  •  03-07-2019
  •  | 
  •  

سؤال

وأنا باستخدام UINavigationController وأواجه صعوبة في الإفراج عن الأشياء عندما دفع طريقة عرض جديدة. أريد أن أضع كائن على وحدة تحكم جديدة قبل دفعها. الطريق أفعله في هذا هو:

OpenPageViewController *varOpenPageController = [[OpenPageViewController alloc] initWithNibName:@"OpenPageViewController" bundle:nil];
varOpenPageController.bookObj = bookObj;
[[self navigationController] pushViewController:varOpenPageController animated:YES];
//[varOpenPageController release];

إذا كنت غير تعليق هذا الخط الماضي ثم تعطل البرنامج عندما أتنقل الظهر طوال تحكم بلدي. ولدي أيضا سؤال آخر بشأن متى / كيف للافراج عن كائن. في bookObj لدي مجموعة قابلة للتغيير من كائنات الصفحة وأريد تغيير نص الكائن الصفحة الحالية. أفعل ذلك من خلال:

Page *pageObj = [[bookObj pagesArray] objectAtIndex:currentPage];
pageObj.page_Text = textView.text;
[[bookObj pagesArray] replaceObjectAtIndex:currentPage withObject:pageObj];
//[pageObj release];

وتعطل البرنامج إذا كنت غير تعليق هذا الخط الماضي كذلك. وسوف تتيح لي التنقل إلى الأمام ولكن عندما تنقل ذهابا ومحاولة المضي قدما مرة أخرى أنه تعطل.

وAutoreleasing الكائنات تحقيق نتائج مماثلة. يرجى تقديم المشورة إذا كنت تستطيع. شكرا.

وتحرير: عندما لا افراج عن المثال الأول varOpenPageController وتشغيل جهاز محاكاة مع التسريبات ثم يبدو برنامج لتعمل بشكل صحيح. ومع ذلك، إذا كنت لا تعمل التسريبات فإنه تعطل. هل لديها أي أفكار لماذا يمكن أن يحدث هذا؟ شكرا.

نصائح أخرى

وأول مثال لديك من دفع تحكم الرأي على وحدة تحكم الملاحة هو الصحيح مع الإصدار. إذا كان هذا هو تحطمها عندما كنت أعود، وربما يعني أن لديك شيئا خاطئا في طريقة dealloc OpenPageViewController، ولكن هناك شيئا خطأ في مكان ما يحتفظ تحكم الملاحة تحكم وجهة نظركم ويجب عليك التأكد من أنك الإفراج عنها بعد دفع (إذا كان لديك تخصيص المثال رأي تحكم كما فعلت في التعليمات البرمجية).

scroll top