如何在obj C中使用和访问struct值作为属性?让exec访问不好

时间:2017-02-25 06:26:04

标签: ios objective-c struct exc-bad-access

我有以下结构

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"

1 个答案:

答案 0 :(得分:0)

 file.gFileInfo->fp.fileHeaderContent = [somedata bytes]

我收到错误:“表达式无法分配”

将整个结构体构造为局部变量,替换该字段并将其分配给属性。尽管如此,结构是非常重要的,可以作为参数传递。