Use Objective-C without NSObject?

Posted by Alex I on Stack Overflow See other posts from Stack Overflow or by Alex I
Published on 2013-10-20T03:39:07Z Indexed on 2013/10/20 3:54 UTC
Read the original article Hit count: 360

Filed under:
|
|
|
|

I am testing some simple Objective-C code on Windows (cygwin, gcc). This code already works in Xcode on Mac. I would like to convert my objects to not subclass NSObject (or anything else, lol). Is this possible, and how?

What I have so far:

// MyObject.h
@interface MyObject

- (void)myMethod:(int) param;

@end

and

// MyObject.m
#include "MyObject.h"

@interface MyObject()
{ // this line is a syntax error, why?
    int _field;
}
@end

@implementation MyObject

- (id)init {
  // what goes in here?
    return self;
}

- (void)myMethod:(int) param {
  _field = param;
}

@end

What happens when I try compiling it:

gcc -o test MyObject.m -lobjc
MyObject.m:4:1: error: expected identifier or ‘(’ before ‘{’ token
MyObject.m: In function ‘-[MyObject myMethod:]’:
MyObject.m:17:3: error: ‘_field’ undeclared (first use in this function)

EDIT My compiler is cygwin's gcc, also has cygwin gcc-objc package:

gcc --version
gcc (GCC) 4.7.3

I have tried looking for this online and in a couple of Objective-C tutorials, but every example of a class I have found inherits from NSObject. Is it really impossible to write Objective-C without Cocoa or some kind of Cocoa replacement that provides NSObject?

(Yes, I know about GNUstep. I would really rather avoid that if possible...)

© Stack Overflow or respective owner

Related posts about objective-c

Related posts about Windows