我有以下结构
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的变量?
我最初尝试使用代码:
@property (nonatomic, assign) globalFileStruct gFileInfo;
然而,问题在于我在以下方法中使用它:
file.gFileInfo->fp.fileHeaderContent = [somedata bytes]
我收到错误:"Expression not assignable"
答案 0 :(得分:0)
file.gFileInfo->fp.fileHeaderContent = [somedata bytes]
我收到错误:“表达式无法分配”
将整个结构体构造为局部变量,替换该字段并将其分配给属性。尽管如此,结构是非常重要的,可以作为参数传递。