diff --git a/dtable.c b/dtable.c index 3183061..2fd0846 100644 --- a/dtable.c +++ b/dtable.c @@ -51,26 +51,25 @@ static void checkARCAccessors(Class cls) autorelease = sel_registerName("autorelease"); isARC = sel_registerName("_ARCCompliantRetainRelease"); } - if (ownsMethod(cls, isARC)) - { - objc_set_class_flag(cls, objc_class_flag_fast_arc); - return; - } struct objc_slot *slot = objc_get_slot(cls, retain); if (!ownsMethod(slot->owner, isARC)) { objc_clear_class_flag(cls, objc_class_flag_fast_arc); + return; } slot = objc_get_slot(cls, release); if (!ownsMethod(slot->owner, isARC)) { objc_clear_class_flag(cls, objc_class_flag_fast_arc); + return; } slot = objc_get_slot(cls, autorelease); if (!ownsMethod(slot->owner, isARC)) { objc_clear_class_flag(cls, objc_class_flag_fast_arc); + return; } + objc_set_class_flag(cls, objc_class_flag_fast_arc); } static void collectMethodsForMethodListToSparseArray(