我在Windows上testing一些简单的Objective-C代码(cygwin,gcc)。 这段代码已经在Mac上的Xcode中起作用了。 我想转换我的对象不是NSObject子类(或其他任何东西,大声笑)。 这是可能的,以及如何?
我到目前为止:
// MyObject.h @interface MyObject - (void)myMethod:(int) param; @end
和
// 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
当我尝试编译时会发生什么:
最大化窗口维护任务栏限制
我怎样才能捕捉到另一个进程的未处理的exception?
是否可以使用.Net框架以编程方式logging对Windows共享(SMB共享)的访问?
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)
编辑我的编译器是cygwin的gcc,也有cygwin gcc-objc包:
gcc --version gcc (GCC) 4.7.3
我已经尝试在线寻找这个,并在几个Objective-C教程中,但是我发现从NSObjectinheritance的每一个类的例子。 如果没有Cocoa或者提供NSObject的Cocoa替代品,编写Objective-C是不可能的?
(是的,我知道GNUstep,如果可能的话,我真的宁愿避免)
编辑这工作:
// MyObject.h @interface MyObject @end // MyObject.m #include "MyObject.h" @implementation MyObject @end
虽然不是很有用
写入单个日志文件的多个进程
laravel可执行应用程序
Windows操作系统中是否存在零拷贝?
事件查看器中的行号
可以在没有基类的情况下创建类。 有几件事情正在进行。 首先,你的编译器似乎不喜欢“()”类的扩展语法。 其他编译器也可以。 如果你在MyObject.m的第四行删除了那些“()”,那么你的编译器会抱怨你有两个MyObject类的重复接口。 为了您的测试目的,您应该将_field变量移动到头文件中的MyObject声明中,如:
@interface MyObject { int _field; } -(void)myMethod:(int)param; @end
然后,您可以完全删除.m文件中的额外的@interface。 这应该让你至少开始。
这是可能的,但是请注意NSObject在objective-c中实现了内存分配API,如果你没有在一个根类上实现NSObject的+alloc和-dealloc或者等价物,你仍然需要实现相同的功能每班。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。