You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
62 lines
968 B
Objective-C
62 lines
968 B
Objective-C
#import "../objc/runtime.h"
|
|
#import "../objc/objc-arc.h"
|
|
#ifdef NDEBUG
|
|
#undef NDEBUG
|
|
#endif
|
|
#include <assert.h>
|
|
|
|
#ifndef __has_attribute
|
|
#define __has_attribute(x) 0
|
|
#endif
|
|
|
|
#if __has_attribute(objc_root_class)
|
|
__attribute__((objc_root_class))
|
|
#endif
|
|
@interface Test { id isa; }
|
|
+ (Class)class;
|
|
+ (id)new;
|
|
#if !__has_feature(objc_arc)
|
|
- (void)dealloc;
|
|
- (id)autorelease;
|
|
- (id)retain;
|
|
- (void)release;
|
|
#endif
|
|
@end
|
|
|
|
#if !__has_feature(objc_arc)
|
|
@implementation Test
|
|
+ (Class)class { return self; }
|
|
+ (id)new
|
|
{
|
|
return class_createInstance(self, 0);
|
|
}
|
|
- (void)dealloc
|
|
{
|
|
object_dispose(self);
|
|
}
|
|
- (id)autorelease
|
|
{
|
|
return objc_autorelease(self);
|
|
}
|
|
- (id)retain
|
|
{
|
|
return objc_retain(self);
|
|
}
|
|
- (void)release
|
|
{
|
|
objc_release(self);
|
|
}
|
|
- (void)_ARCCompliantRetainRelease {}
|
|
@end
|
|
#endif
|
|
|
|
@interface NSAutoreleasePool : Test
|
|
@end
|
|
@implementation NSAutoreleasePool
|
|
- (void)_ARCCompatibleAutoreleasePool {}
|
|
+ (void)addObject:(id)anObject
|
|
{
|
|
objc_autorelease(anObject);
|
|
}
|
|
@end
|