error “Passing address of non-local object to __autoreleasing parameter for write-back”

后端 未结 3 2030
别跟我提以往
别跟我提以往 2020-12-29 03:22

I\'m converting my socket client to ARC:

- (id)initWithHostname:(NSString *)hostname AndPort:(NSInteger)port
{
    if((self = [super init]))
    {
        oB         


        
3条回答
  •  余生分开走
    2020-12-29 04:04

    I think you should not alloc and init the iStream and oStream variables. They are meant to receive. Without ARC this simply creates two memory leaks that go unnoticed. Now your compiler uses ARC and then it does matter. The receiving variables should be local:

    So try:

        NSInputStream *iStream;
        NSOutputStream *oStream;
    
        oBuffer = [[NSMutableData alloc] init];
        iBuffer = [[NSMutableData alloc] init];
    
        [NSStream getStreamsToHost:[NSHost hostWithName:hostname] port:port inputStream:&iStream outputStream:&oStream];
    

    That should work, AFAICT. But note: I can't test this here.

提交回复
热议问题