标签: gnustep

Objective-C仅用于Mac OS/iPhone上的开发吗?

我不知道Objective-C,但对我来说它似乎是一种很好的语言.但我所知道的唯一背景是Apple的一切.但Objective-C甚至在GNU Compiler Collection中.

开放的那些东西有什么缺失吗?或者Objective-C已经有了更广泛的基础吗?如果有公司选择Objective-C来开发他们的产品,我很感兴趣.

open-source objective-c gnustep

24
推荐指数
5
解决办法
1万
查看次数

在Windows上使用GNUstep编译Objective-C时无法找到标准库

我刚刚在我的Windows XP机器上安装了GNUstep,我正在尝试从命令行编译以下Objective-C Hello World程序:

#import <Foundation/Foundation.h>

int main(int argc, const char *argv[]) {
    NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];

    NSLog(@"Hello world\n");

    [pool drain];
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

当我尝试从命令行编译程序时,如此

gcc hello.m -o hello
Run Code Online (Sandbox Code Playgroud)

我最终得到以下错误

hello.m:1:34: Foundation/Foundation.h: No such file or directory
Run Code Online (Sandbox Code Playgroud)

我需要做些什么来通知编译器标准Objective-C库的位置?

windows objective-c gnustep

11
推荐指数
2
解决办法
3万
查看次数

打开文件对话框

我正在学习Objective-C并尝试开发一个简单的拉链应用程序,但是我现在停止了,当我需要在我的对话框中插入一个按钮时,这个按钮打开一个打开文件对话框,它将选择要压缩的文件,但是从未使用过打开文件对话框,然后我如何打开它并将用户选择的文件存储在char*?谢谢.

请记住,我正在使用GNUstep(Linux).

user-interface dialog objective-c openfiledialog gnustep

10
推荐指数
2
解决办法
1万
查看次数

是否可以使用GNUstep将iOS应用程序移植到Windows?(用于学习目的)

我是一个Objective-C新手,他仍然没有Mac,但我仍然想练习这门语言.我听说在非Mac世界中,GNUstep提供了一个很好的Cocoa替代品,可以用作新Objective-c开发人员的学习工具.我的问题是,由于GNUstep移植了很多Cocoa类,我移植iOS游戏及其开发框架的可能性有多大.我在谈论iOS的Canabalt(https://github.com/ericjohnson/canabalt-ios),它基于Flixel框架的iOS版本.我想知道是否有最轻微的机会能够使用GNUstep在Windows上移植和运行此游戏.请记住,这完全是出于教育目的,所以请不要在其中寻找任何实用价值,除了我用ObjC变得更好:)

我想它应该在技术上可行.一般来说,使用GNUstep将任何iOS应用程序移植到Win的可能性是多少?

iphone objective-c gnustep ios

10
推荐指数
1
解决办法
2499
查看次数

GNUstep会支持@property和@synthesize吗?

我正在开发一个Cocoa应用程序,打算在Windows和Linux上使用GNUstep.到目前为止,我一直在避免使用Objective-C 2.0功能,但我真的很想开始使用至少属性.谷歌似乎告诉我(虽然我在这个问题上找不到很多)但是目前,没有任何Objective-C 2.0功能可以与GNUstep配合使用.有没有人知道是否有计划让GNUstep支持@property和@synthesize?

我也想知道是否有一个"扩大"它们的好策略?我当然可以想象一个程序可以使用@property和@synthesize将代码扩展为不使用任何Objective-C 2.0功能的代码,但是我担心对这样的东西没有太多需求,所以我可能会赢得'能够找到一个.

您认为GNUstep很有可能在未来一年内支持@property和@synthesize吗?

objective-c gnustep

9
推荐指数
1
解决办法
3353
查看次数

Objective-C:如何在GNUStep中启用ARC?

Objective-C/ARC /内存管理问题已经针对SO进行了死亡,但这个问题与现有问题略有不同.

我一直在尝试将Objective-C与GNUStep和Clang一起使用.我已经下载了现代Objective-C功能所需的库,如ARC; 块工作和@autoreleasepool编译器接受s以及相关的编译器标志.AppKit GUI工具包可以工作,队列调度程序也可以.

我的理解是,如果正确的话,alloced对象会自动设置为在退出@autoreleasepool"父"堆栈帧时释放,并且释放会减少引用计数.然而,编译器不会哀叹手动[super dealloc]和容忍手动autoreleasesreleases,这意味着ARC甚至没有接通.

有人可能会想到谷歌搜索GNUStep ARC ~enable会产生一些我错过的编译器标志,但事实并非如此.

这是一些示例代码.它是C99 bool的多维数组的对象包装器,它被malloc编入内部initfree内部dealloc,我收集的是deallocARC代码中为数不多的合法用途之一.注意deallocputs不能在@autoreleasepool结束后,被称为尽管有仅是在它创造了一个单一的参考.一本手册,release或者说autorelease很有效.

#import <stdbool.h>
#import <stdio.h>
#import <stdlib.h>

#import <Foundation/Foundation.h>

@interface Area : NSObject {
    bool *area;
    size_t width, height;
}

- (id) initWithWidth:(size_t)aWidth height:(size_t)aHeight;
- (void) dealloc;
- (void) display;
@end

@implementation Area

- …
Run Code Online (Sandbox Code Playgroud)

memory-management objective-c autorelease gnustep automatic-ref-counting

9
推荐指数
1
解决办法
1762
查看次数

适用于Mac OS X和Linux兼容性的最佳编译语言

我们需要编写一些可以在Mac OS X服务器和Ubuntu上编译和运行的软件.我们很乐意使用Objective-C及其所有Cocoa的优点,但是我们使用的部件的GNUstep实现都被破坏了(无论如何都在最新的Ubuntu包中.)

鉴于此,我们应该使用C++(我真的不愿意),C或其他我们没有想过的东西?

它是一个资源密集型的服务器/后端进程,该软件的Java和其他解释版本的性能比我们编写的Objective-C概念要差得多,因此我们现在希望重写"已编译" [1]"语言.

(注意:有些人可能认为这是主观的,但是在一天结束时我们确实需要完成工作,这里必须有一个合理适当的正确答案).

[1]编译为本机CPU指令,而不是编译成"字节代码",然后必须由解释器运行.

linux compatibility objective-c gnustep

8
推荐指数
4
解决办法
1684
查看次数

Objective-C有标准库吗?

大多数现代编程语言都有标准库?这是我的印象是,没有为对象 - 一个体面的大小标准库,而这主要依赖/所有可可和(加上人们不想使用GNUstep的)就是为什么对象 - 仅在Mac上使用)?

这是真的/到什么程度?有没有标准的obj-c收藏品?

(注意我没有做任何Obj-C编程,并且不太可能在不久的将来尝试它,我只是好奇).PS有没有任何体面的非Cocoa/Gnustep库?他们是不是苹果,他们是开源的吗?

macos cocoa objective-c standard-library gnustep

8
推荐指数
1
解决办法
2572
查看次数

Linux编译错误的Objective-C

似乎有很多关于如何做到这一点的教程,每个都略有不同.我希望有人能够认出我收到的错误信息,并指出我正确的方向.

我的代码,hm是:

#import <Foundation/Foundation.h>
int main (int argc, const char * argv[])
{
 NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
 NSLog (@"hello world");
 [pool drain];
 return 0;
}
Run Code Online (Sandbox Code Playgroud)

在编译之前,我进入控制台:

. /usr/share/GNUstep/Makefiles/GNUstep.sh
Run Code Online (Sandbox Code Playgroud)

我尝试编译:

gcc `gnustep-config --objc-flags` -lgnustep-base h.m -o hello
Run Code Online (Sandbox Code Playgroud)

得到:

/tmp/ccgLOnpY.o: In function `main':
/home/ge/objective-c/h.m:4: undefined reference to `objc_get_class'
/home/ge/objective-c/h.m:4: undefined reference to `objc_msg_lookup'
/home/ge/objective-c/h.m:4: undefined reference to `objc_msg_lookup'
/home/ge/objective-c/h.m:5: undefined reference to `NSLog'
/home/ge/objective-c/h.m:6: undefined reference to `objc_msg_lookup'
/tmp/ccgLOnpY.o: In function `__objc_gnu_init':
/home/ge/objective-c/h.m:8: undefined reference to `__objc_exec_class'
/tmp/ccgLOnpY.o:(.data.rel+0x0): undefined …

linux ubuntu objective-c gnustep

8
推荐指数
3
解决办法
5374
查看次数

Objective-C中的扩展问题

以下是处理类扩展的代码段.我要做的是生成一个称为内部ID的随机ID(稍后由程序使用),它以加密形式存储在内存中.代码无法使用gcc和clang编译(我在Windows上通过GNUStep运行Objective C),每个编译器都有不同的错误消息,在代码中作为注释提到.

请注意,我知道这个问题可以通过忽略主@faceface(即#import语句之后的那个)本身的扩展和声明方法和属性来轻松解决.我使用扩展的唯一原因是这个类是由一些其他子类继承的,"internalID"属性必须是不可访问的.

#import <Foundation/Foundation.h>

@interface Foo : NSObject
{
    NSString * idStr;
}
- (void)setInternalID;
- (NSString *)fetchExternalID;
@end

// Extension declaration
@interface Foo()
{ // Compilation via gcc throws error at this line stating "Expected identifier or '(' before '{' token"
    NSString *internalID; // Compilation via clang throws error at this line stating "instance variables may not be placed in class extension"
}
@end

@implementation Foo
- (void)setInternalID{
    internalID = [NSString stringWithFormat: 
    @"__KEY__INTERNAL__DUMP2872167841398551___8765%d98KLPYFGF(&^$#ESFK___JNHGV",arc4random()%100];
}
- (NSString *)fetchExternalID{
    NSString …
Run Code Online (Sandbox Code Playgroud)

gcc objective-c gnustep llvm-clang class-extensions

8
推荐指数
1
解决办法
234
查看次数