我是 Objective-C 的新手,但在 C 和 C++ 方面拥有丰富的经验。我注意到的第一件事是基本教程中存在真正的空白,因为所有人都假设您正在为 iPhone 或 Mac 开发并使用 Cocoa。我没有使用 Cocoa 或 Gnustep。重点:
作为一个简单的入门示例,我正在尝试包装 C 的文件 I/O 功能。我的代码以 File.h 开头
#include <objc/Object.h>
#include <stdio.h>
@interface File:Object
{
FILE *pFile;
char *path;
}
@property FILE *pFile;
@property char *path;
- (void)new;
- (void)OpenReadText:(const char*)var1;
- (void)release;
@end
和文件.m
#include "File.h"
@implementation File
@synthesize pFile, path;
- (void)new
{
self = [super init];
}
- (void)release
{
fclose(pFile);
[super release];
}
- (void)OpenReadText:(char*)var1
{
path = var1;
pFile = fopen(path,"r");
}
@end
然后 main.m
#include <stdio.h>
#import <objc/Object.h>
#include "File.h"
int main(void) {
File *Fileobj = [File new];
[Fileobj OpenReadText:"File.h"];
[Fileobj release];
}
编译器给我一个警告,我的对象“可能不响应'-release'”。然后在运行程序时会导致运行时错误:“无法识别发布。此应用程序已请求运行时终止”..等等。
我猜我犯了一个简单的新手错误,但是在哪里?或者也许缺少什么?我希望有人可以在这里为我指明正确的方向。谢谢。
如果这个 qst 已经被问过,那么参考也可以。我确实试图找到一个参考,但没有运气。
跟进:
将发布方法更改为
- (void)release
{
fclose(pFile);
[super free];
}
它似乎奏效了。显然free
是被认可的object.h
。