كيفية زيادة nsdate
-
18-09-2019 - |
سؤال
أحاول تنفيذ طريقة من شأنها زيادة متغير مثيل NSDATE لمدة شهر واحد. أواجه مشاكل في إدارة الذاكرة مع هذا. (أنا أستخدم MallocScraxBle و NSZombieEnabled، والحصول على الرسالة: - [CFDATE COPY]: الرسائل المرسلة إلى المثيل المعالج
سؤالي ينزل: ما هي أفضل طريقة لزيادة التاريخ؟ هنا هو رمزي:
NSDate *displayedMonthYear;
....
-(IBAction) nextMonth:(id)sender {
NSCalendar *calendar= [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
NSDateComponents *dateComponents = [[NSDateComponents alloc] init];
[dateComponents setMonth:1];
NSDate *prevDate = [displayedMonthYear copy];
[displayedMonthYear release];
displayedMonthYear = [calendar dateByAddingComponents:dateComponents toDate:prevDate options:0];
[prevDate release];
[dateComponents release];
[calendar release];
}
في الأصل لم أفعل الشيء مع النسخة المحرة، ولكن كان يفعل شيئا مثل:
displayedMonthYear = [calendar dateByAddingComponents:dateComponents toDate:displayedMonthYear options:0];
ومع ذلك، كنت قلقا من أن هذا النهج سوف تسرب الذاكرة. لذلك أعتقد أن هذه مشكلة لإدارة الذاكرة من مشكلة تاريخ، ولكن أي مساعدة ستكون رائعة -
المحلول
تحتاج retain
القيمة المعينة ل displayedMonthYear
.
ليس هناك حاجة أيضا للاستخدام copy
. وبعد هناك الكثير من الطرق للقيام بذلك؛ إليك مثال آخر:
NSDate* newDate = [calendar dateByAddingComponents:dateComponents displayedMonthYear options:0];
[displayedMonthYear release];
displayedMonthYear = [newDate retain];
لا تنتمي إلى StackOverflow