diff options
| -rw-r--r-- | include/Paradox/Object.h | 2 | ||||
| -rw-r--r-- | meson.build | 3 | ||||
| -rw-r--r-- | src/Object.m | 8 | ||||
| -rw-r--r-- | tests/AutoreleasePool.m | 15 |
4 files changed, 27 insertions, 1 deletions
diff --git a/include/Paradox/Object.h b/include/Paradox/Object.h index 87b93f5..ca602d7 100644 --- a/include/Paradox/Object.h +++ b/include/Paradox/Object.h @@ -14,6 +14,8 @@ - (instancetype)init; - (void)dealloc; - (void)release; +- (instancetype)autorelease; +- (void)healthCheck; @end #endif diff --git a/meson.build b/meson.build index a97cc69..09e4649 100644 --- a/meson.build +++ b/meson.build @@ -1,6 +1,6 @@ project('paradox', 'objc', version: '0.0.1') -add_project_arguments('-Wno-objc-root-class', '-Werror', '-pedantic', '-Wall', language: 'objc') +add_project_arguments('-Wno-objc-root-class', '-Werror', '-pedantic', '-Wall', '-fobjc-runtime=gnustep-2.0', language: 'objc') deps = [] deps += dependency('libobjc') # This is libobjc2, not libobjc - do not be fooled @@ -24,6 +24,7 @@ test_deps += dependency('libobjc') test_deps += declare_dependency(link_with: paradox, include_directories: inc, dependencies: deps) executable('Object', 'tests/Object.m', dependencies: test_deps) +executable('AutoreleasePool', 'tests/AutoreleasePool.m', objc_args: ['-fobjc-arc'], dependencies: test_deps) pkg = import('pkgconfig') pkg.generate(paradox, subdirs: 'paradox', version: '0.0.1', name: 'paradox', filebase: 'paradox', description: 'Application framework for Objective-C built from first principles.', requires: ['libobjc']) diff --git a/src/Object.m b/src/Object.m index 7b26bf8..f9a0184 100644 --- a/src/Object.m +++ b/src/Object.m @@ -34,6 +34,10 @@ objc_release_fast_np(self); } +- (instancetype) autorelease { + return objc_autorelease(self); +} + - (instancetype)init { return self; } @@ -42,4 +46,8 @@ object_dispose(self); } +- (void)healthCheck { + printf("PXObject health check: %p\n", (void*)self); +} + @end diff --git a/tests/AutoreleasePool.m b/tests/AutoreleasePool.m new file mode 100644 index 0000000..f0b3599 --- /dev/null +++ b/tests/AutoreleasePool.m @@ -0,0 +1,15 @@ +#include <Paradox/Core.h> +#include <stdio.h> + +int main(void) { + printf("PXObject autorelease test\n"); + + @autoreleasepool { + PXObject *object = [PXObject new]; + printf("created object in autorelease pool\n"); + printf("attempting healthCheck\n"); + [object healthCheck]; + } + printf("autorelease pool end\n"); + printf("test complete\n"); +} |
