From d1af0058f7787011eeee867d9ae4ddbd3dda6359 Mon Sep 17 00:00:00 2001 From: Michael Koziarski Date: Tue, 6 Dec 2011 14:37:55 +1300 Subject: [PATCH 1/3] use the MR_RETAIN/MR_RELEASE/MR_AUTORELEASE macros everywhere --- Source/Categories/NSManagedObjectContext+MagicalRecord.m | 6 ++---- Source/Categories/NSManagedObjectModel+MagicalRecord.m | 6 ++---- Source/Categories/NSPersistentStore+MagicalRecord.m | 6 ++---- .../Categories/NSPersistentStoreCoordinator+MagicalRecord.m | 6 ++---- Source/MagicalRecordHelpers.m | 4 +--- 5 files changed, 9 insertions(+), 19 deletions(-) diff --git a/Source/Categories/NSManagedObjectContext+MagicalRecord.m b/Source/Categories/NSManagedObjectContext+MagicalRecord.m index 5f2a5034e..cebe92b6c 100644 --- a/Source/Categories/NSManagedObjectContext+MagicalRecord.m +++ b/Source/Categories/NSManagedObjectContext+MagicalRecord.m @@ -31,10 +31,8 @@ + (NSManagedObjectContext *)MR_defaultContext + (void) MR_setDefaultContext:(NSManagedObjectContext *)moc { -#ifndef NS_AUTOMATED_REFCOUNT_UNAVAILABLE - [moc retain]; - [defaultManageObjectContext_ release]; -#endif + MR_RETAIN(moc); + MR_RELEASE(defaultManageObjectContext_); defaultManageObjectContext_ = moc; } diff --git a/Source/Categories/NSManagedObjectModel+MagicalRecord.m b/Source/Categories/NSManagedObjectModel+MagicalRecord.m index f045081ad..9b1add3aa 100644 --- a/Source/Categories/NSManagedObjectModel+MagicalRecord.m +++ b/Source/Categories/NSManagedObjectModel+MagicalRecord.m @@ -25,10 +25,8 @@ + (NSManagedObjectModel *) MR_defaultManagedObjectModel + (void) MR_setDefaultManagedObjectModel:(NSManagedObjectModel *)newDefaultModel { -#ifndef NS_AUTOMATED_REFCOUNT_UNAVAILABLE - [newDefaultModel retain]; - [defaultManagedObjectModel_ release]; -#endif + MR_RETAIN(newDefaultModel); + MR_RELEASE(defaultManagedObjectModel_); defaultManagedObjectModel_ = newDefaultModel; } diff --git a/Source/Categories/NSPersistentStore+MagicalRecord.m b/Source/Categories/NSPersistentStore+MagicalRecord.m index df4599fb0..45b6ed507 100644 --- a/Source/Categories/NSPersistentStore+MagicalRecord.m +++ b/Source/Categories/NSPersistentStore+MagicalRecord.m @@ -22,10 +22,8 @@ + (NSPersistentStore *) MR_defaultPersistentStore + (void) MR_setDefaultPersistentStore:(NSPersistentStore *) store { -#ifndef NS_AUTOMATED_REFCOUNT_UNAVAILABLE - [store retain]; - [defaultPersistentStore_ release]; -#endif + MR_RETAIN(store); + MR_RELEASE(defaultPersistentStore_); defaultPersistentStore_ = store; } diff --git a/Source/Categories/NSPersistentStoreCoordinator+MagicalRecord.m b/Source/Categories/NSPersistentStoreCoordinator+MagicalRecord.m index d3ea29c35..765ec21ea 100644 --- a/Source/Categories/NSPersistentStoreCoordinator+MagicalRecord.m +++ b/Source/Categories/NSPersistentStoreCoordinator+MagicalRecord.m @@ -29,10 +29,8 @@ + (NSPersistentStoreCoordinator *) MR_defaultStoreCoordinator + (void) MR_setDefaultStoreCoordinator:(NSPersistentStoreCoordinator *)coordinator { -#ifndef NS_AUTOMATED_REFCOUNT_UNAVAILABLE - [coordinator retain]; - [defaultCoordinator_ release]; -#endif + MR_RETAIN(coordinator); + MR_RELEASE(defaultCoordinator_); defaultCoordinator_ = coordinator; if (defaultCoordinator_ != nil) diff --git a/Source/MagicalRecordHelpers.m b/Source/MagicalRecordHelpers.m index 744282348..6d1935352 100644 --- a/Source/MagicalRecordHelpers.m +++ b/Source/MagicalRecordHelpers.m @@ -417,9 +417,7 @@ BOOL addMagicalRecordShortHandMethodToPrefixedClassMethod(Class klass, SEL origi [formatter setDateFormat:format]; NSDate *parsedDate = [formatter dateFromString:value]; -#ifndef NS_AUTOMATED_REFCOUNT_UNAVAILABLE - [formatter autorelease]; -#endif + MR_AUTORELEASE(formatter); return parsedDate; } From 2bcd11706980ad461de427992dc2f9856f2fc823 Mon Sep 17 00:00:00 2001 From: Michael Koziarski Date: Tue, 6 Dec 2011 14:38:20 +1300 Subject: [PATCH 2/3] Add an MR_USE_ARC option that users can define themselves if they use arc --- Source/Categories/NSManagedObjectContext+MagicalRecord.m | 2 +- Source/CoreData+MagicalRecord.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Source/Categories/NSManagedObjectContext+MagicalRecord.m b/Source/Categories/NSManagedObjectContext+MagicalRecord.m index cebe92b6c..1003ca2eb 100644 --- a/Source/Categories/NSManagedObjectContext+MagicalRecord.m +++ b/Source/Categories/NSManagedObjectContext+MagicalRecord.m @@ -165,7 +165,7 @@ - (BOOL) MR_saveWithErrorHandler:(void (^)(NSError *))errorCallback; - (void) MR_saveWrapper; { -#ifdef NS_AUTOMATED_REFCOUNT_UNAVAILABLE +#ifdef MR_USE_ARC @autoreleasepool { [self MR_save]; diff --git a/Source/CoreData+MagicalRecord.h b/Source/CoreData+MagicalRecord.h index 566921b81..ab14cf8be 100644 --- a/Source/CoreData+MagicalRecord.h +++ b/Source/CoreData+MagicalRecord.h @@ -18,7 +18,7 @@ #import -#ifndef NS_AUTOMATED_REFCOUNT_UNAVAILABLE +#ifndef MR_USE_ARC #define MR_RETAIN(xx) [xx retain]; #define MR_RELEASE(xx) [xx release]; #define MR_AUTORELEASE(xx) [xx autorelease]; From 3dd7591d189377af90914b65ca1cb0df7ec76279 Mon Sep 17 00:00:00 2001 From: Michael Koziarski Date: Tue, 6 Dec 2011 15:21:40 +1300 Subject: [PATCH 3/3] Default to using ARC --- .../NSManagedObjectContext+MagicalRecord.m | 2 +- Source/CoreData+MagicalRecord.h | 12 ++++++++---- 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/Source/Categories/NSManagedObjectContext+MagicalRecord.m b/Source/Categories/NSManagedObjectContext+MagicalRecord.m index 1003ca2eb..10971d749 100644 --- a/Source/Categories/NSManagedObjectContext+MagicalRecord.m +++ b/Source/Categories/NSManagedObjectContext+MagicalRecord.m @@ -165,7 +165,7 @@ - (BOOL) MR_saveWithErrorHandler:(void (^)(NSError *))errorCallback; - (void) MR_saveWrapper; { -#ifdef MR_USE_ARC +#if MR_USE_ARC @autoreleasepool { [self MR_save]; diff --git a/Source/CoreData+MagicalRecord.h b/Source/CoreData+MagicalRecord.h index ab14cf8be..dec10b32f 100644 --- a/Source/CoreData+MagicalRecord.h +++ b/Source/CoreData+MagicalRecord.h @@ -19,13 +19,17 @@ #import #ifndef MR_USE_ARC -#define MR_RETAIN(xx) [xx retain]; -#define MR_RELEASE(xx) [xx release]; -#define MR_AUTORELEASE(xx) [xx autorelease]; -#else +#define MR_USE_ARC 1 +#endif + +#if MR_USE_ARC #define MR_RETAIN(xx) ((void)0) #define MR_RELEASE(xx) ((void)0) #define MR_AUTORELEASE(xx) ((void)0) +#else +#define MR_RETAIN(xx) [xx retain]; +#define MR_RELEASE(xx) [xx release]; +#define MR_AUTORELEASE(xx) [xx autorelease]; #endif #ifdef MR_SHORTHAND