Objective-C导入,带有Cygwin的基元类型

Objective-C导入,带有Cygwin的基元类型,objective-c,import,cygwin,primitive-types,Objective C,Import,Cygwin,Primitive Types,我了解Objective-C的基本语法,已经安装了Cygwin,并想进行实验。但是,我不确定两件事: 我要导入的内容,以及 基本类型名称是什么。 有人能帮我吗?唯一可以继承的对象是对象。请记住,它提供的功能远不及NeXTStep或Cocoa的NSObject对象甚至没有引用计数之类的功能。为了获得与NSObject相同的引用计数内存管理,您需要自己实现它 #import <objc/Object.h> @interface MyObject : Object { int r

我了解Objective-C的基本语法,已经安装了Cygwin,并想进行实验。但是,我不确定两件事: 我要导入的内容,以及 基本类型名称是什么。
有人能帮我吗?

唯一可以继承的对象是
对象。请记住,它提供的功能远不及NeXTStep或Cocoa的
NSObject
<代码>对象
甚至没有引用计数之类的功能。为了获得与
NSObject
相同的引用计数内存管理,您需要自己实现它

#import <objc/Object.h>

@interface MyObject : Object
{
    int retainCount;
}

- (id) retain;
- (int) retainCount;
- (void) release;
@end

@implementation MyObject

+ (MyObject *) alloc
{
    // In Cocoa, allocated objects have an implicit retain.
    MyObject *anObject = [super alloc];
    anObject->retainCount = 1;
    return anObject;
}

- (void) release
{
    retainCount--;
    if (retainCount == 0)
        [self free];
}

- (id) retain
{
    retainCount++;
    return self;
}

- (int) retainCount
{
    return retainCount;
}
@end


int main (int argc, char *argv[])
{
    MyObject *test = [[MyObject alloc] init];
    [test retain];
    [test release];
    [test release];
    // (test should be deallocated now)

    return 0;
}
编译时,可以使用标志
-fconstant string class=MyStaticStringClass
。您可以为string类提供任何您喜欢的方法,但是它必须只有两个ivar,并且它们的顺序必须正确。如果不想使用Objective-C样式的字符串,则不必定义静态字符串类。如果您确实定义了一个静态字符串类,那么它应该能够复制动态字符串类的行为(即在运行时分配的字符串对象),这样您就可以在给定的情况下使用其中一个


对于命令行实用程序和基本应用程序,我选择不使用Cocoa或GNUstep,而是定义自己的类。它有很多缺点,但我发现Objective-C中的对象抽象和变形比我使用的其他语言更容易实现。

唯一可以继承的对象是
对象。请记住,它提供的功能远不及NeXTStep或Cocoa的
NSObject
<代码>对象
甚至没有引用计数之类的功能。为了获得与
NSObject
相同的引用计数内存管理,您需要自己实现它

#import <objc/Object.h>

@interface MyObject : Object
{
    int retainCount;
}

- (id) retain;
- (int) retainCount;
- (void) release;
@end

@implementation MyObject

+ (MyObject *) alloc
{
    // In Cocoa, allocated objects have an implicit retain.
    MyObject *anObject = [super alloc];
    anObject->retainCount = 1;
    return anObject;
}

- (void) release
{
    retainCount--;
    if (retainCount == 0)
        [self free];
}

- (id) retain
{
    retainCount++;
    return self;
}

- (int) retainCount
{
    return retainCount;
}
@end


int main (int argc, char *argv[])
{
    MyObject *test = [[MyObject alloc] init];
    [test retain];
    [test release];
    [test release];
    // (test should be deallocated now)

    return 0;
}
编译时,可以使用标志
-fconstant string class=MyStaticStringClass
。您可以为string类提供任何您喜欢的方法,但是它必须只有两个ivar,并且它们的顺序必须正确。如果不想使用Objective-C样式的字符串,则不必定义静态字符串类。如果您确实定义了一个静态字符串类,那么它应该能够复制动态字符串类的行为(即在运行时分配的字符串对象),这样您就可以在给定的情况下使用其中一个

对于命令行实用程序和基本应用程序,我选择不使用Cocoa或GNUstep,而是定义自己的类。它有很多缺点,但我发现Objective-C中的对象抽象和变形比我使用的其他语言更容易实现