0
の取得I持って、次の構造体は次のように私は私のシングルトンの一部としてこれを使用する必要がobj Cのプロパティとして構造体の値を使用してアクセスするにはどうすればよいですか? execの悪いアクセス
Helper.h
typedef struct fileInfo {
UInt8 *fileHeaderContent;
UInt32 fileHeaderLength;
}
typedef struct globalFileStruct {
UInt8 *data;
UInt32 dataLength;
fileInfo fp;
}
:
私はコードで指摘のように@interface CommonFile : NSObject
+ (instancetype)sharedInstance;
@property (nonatomic, assign) globalFileStruct *gFileInfo;
@end
@implementation CommonFile
+ (instancetype)sharedInstance
{
static CommonFile *sharedInfo = nil;
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
sharedInfo = [[self alloc] init];
});
return sharedInfo;
}
-(void)someMethod {
CommonFile *file = [CommonFile sharedInstance];
/* BAD ACCESS ERR */
if(file.gFileInfo->fp.fileHeaderContent == NULL) {
//do something
}
}
@end
、私は取得しています悪いアクセスエラー、私はgFileInfoがNULLであると推測します。
私の質問は、このシナリオを処理する最良の方法は何ですか?どのようにポインタオブジェクトがNULLではなく、実際の変数を指していることを確認できますか?
Iは本来のコードがあることを有する試み次のように私はこの方法でそれを使用した場合
@property (nonatomic, assign) globalFileStruct gFileInfo;
しかし、これに伴う問題は次の通りであった:
file.gFileInfo->fp.fileHeaderContent = [somedata bytes]
を私はエラーを得た:"Expression not assignable"
'gFileInfo'がnullです。あなたは構造体へのポインタを格納しています。そのポインタにnull以外の値を与えたことはありません。 – jtbandes
structのためにいくつかのメモリを 'malloc'してそれをポインタに割り当てる必要があります。 – Paulw11
@ Paulw11私がinitでfreeをdeallocでmallocした場合、プロセスがkillされたとき、またはdeallocを明示的に呼び出すべきときにdeallocが自動的に呼び出されますか? – ExceptionHandler