私は 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
そしてFile.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
です。