Objective-C导入,带有Cygwin的基元类型
我了解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
有人能帮我吗?唯一可以继承的对象是
对象。请记住,它提供的功能远不及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中的对象抽象和变形比我使用的其他语言更容易实现