我正在尝试实现一个单例来管理NSURLSession请求。这是我的代码:

头文件:

@interface httpRequest : NSObject

@property (strong,nonatomic) NSURLSession *session;

+(httpRequest*)request;


实施文件(.m):

+(httpRequest*)request
{
    static httpRequest *shareObject = nil;
    static dispatch_once_t onceToken;
    dispatch_once ( &onceToken, ^{
        shareObject = [[self alloc] init];
        self.session = [NSURLSession sharedSession];
    });
    return shareObject;
}


但在这一行:

self.session = [NSURLSession sharedSession];


我收到此错误:“ NSURLSession成员引用类型结构objc_class是您要使用的指针->”

ios - NSURLSession成员引用类型struct objc_class是指针-LMLPHP
为什么我出错了?你们中的任何人都知道解决这个问题的方法吗?

最佳答案

通常的方法是使用init方法

+(httpRequest*)request
{
    static httpRequest *shareObject = nil;
    static dispatch_once_t onceToken;
    dispatch_once ( &onceToken, ^{
        shareObject = [[self alloc] init];
    });
    return shareObject;
}


- (id)init
{
    self = [super init];
    if (self) {
        self.session = [NSURLSession sharedSession];
       }
    }
    return self;
}


但是由于sharedObject实际上是self这也应该起作用

+(httpRequest*)request
{
    static httpRequest *shareObject = nil;
    static dispatch_once_t onceToken;
    dispatch_once ( &onceToken, ^{
        shareObject = [[self alloc] init];
        shareObject.session = [NSURLSession sharedSession];
    });
    return shareObject;
}

关于ios - NSURLSession成员引用类型struct objc_class是指针,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/41150381/

10-12 22:37