How to instantiate a class in Objective-C that don't inherit from NSObject -
How to instantiate a class in Objective-C that don't inherit from NSObject -
given this:
person.h:
@interface person { } - (void) sayhello; @end person.m:
#import "person.h" @implementation person - (void)sayhello { printf("%s", "steve"); } @end how instantiate person? tried this:
person *p = [person new]; that doesn't work, nor this:
person *p = [person alloc]; [update]
i forgot tell, tried inheriting nsobject, new , alloc works. i'm curious if can instantiate class doesn't inherit nsobject?
you absolutely can so. class needs implement +alloc itself, way nsobject does. @ base, means using malloc() grab chunk of memory big plenty fit construction defining instance of class.
reference-counted memory management nice (retain/release); part of nsobject protocol. can adopt protocol , implement these methods too.
for reference, can @ the object class, root objc class nsobject, apple provides in open source repository objective-c runtime:
@implementation object // snip... + alloc { homecoming (*_zonealloc)((class)self, 0, malloc_default_zone()); } // ... - init { homecoming self; } // , on... that beingness said, should think of nsobject integral part of objc runtime. there's little if reason implement own root class outside of curiosity, investigation, or experimentation (which should, however, not discouraged @ all).
objective-c class instantiation
Comments
Post a Comment