2014-12-21 37 views
0

我想创建一个全局变量,它将包含来自套接字连接的答案。 这是我的代码:如何从输出套接字连接进行全局变量

- (void)initNetworkCommunication { 
     CFReadStreamRef readStream; 
     CFWriteStreamRef writeStream; 
     CFStreamCreatePairWithSocketToHost(NULL, (CFStringRef)@"192.168.0.10", 35000, &readStream, &writeStream); 
     self.inputStream = objc_unretainedObject(readStream); 
     self.outputStream = objc_unretainedObject(writeStream); 
     [self.inputStream setDelegate:self]; 
     [self.outputStream setDelegate:self]; 
     [self.inputStream scheduleInRunLoop:[NSRunLoop currentRunLoop] forMode:NSDefaultRunLoopMode]; 
     [self.outputStream scheduleInRunLoop:[NSRunLoop currentRunLoop] forMode:NSDefaultRunLoopMode]; 

     [self.inputStream open]; 
     [self.outputStream open]; 
    } 

    -(void)stream:(NSStream *)aStream handleEvent:(NSStreamEvent)eventCode 
    { 
     switch (eventCode) { 

      case NSStreamEventOpenCompleted: 
       NSLog(@"Połączono\n"); 
       break; 

      case NSStreamEventHasBytesAvailable: 
       if (aStream == self.inputStream) { 

        uint8_t buffer[1024]; 
        long len; 

        while ([self.inputStream hasBytesAvailable]) { 
         len = [self.inputStream read:buffer maxLength:sizeof(buffer)]; 
         if (len > 0) { 

          NSString *output = [[NSString alloc] initWithBytes:buffer length:len encoding:NSASCIIStringEncoding]; 

          if (nil != output) { 
            NSLog(@"%@",output); 


          } 

         } 
        } 
       } 
       break; 

      case NSStreamEventErrorOccurred: 
       NSLog(@"Nie można połączyć\n"); 
       break; 

      case NSStreamEventEndEncountered: 
       break; 

      default: 
       break; 
     } 
    } 

我想使输出变量为全局,所以我可以在其他功能使用。我想这样做是因为我想创建条件 - 每当我发送请求时,控制器回答我并发送“>”符号,这意味着它已准备好接受另一个请求。我想创建仅在出现“>”时发送的条件。我已经为此做了RegExp,但是现在我有访问输出变量外流功能的问题。

+0

当我试图在.h文件中定义输出 的extern的NSString *输出 我reciving 2级红色的错误 - https://开头DL。 dropboxusercontent.com/u/7071011/Zrzut%20ekranu%202014-12-22%20o%2000.38.44.png –

回答

0

当你将某些东西声明为extern时,你告诉编译器类型AND你将在别的地方定义它。在你的情况你永远不会定义你的变量。

首先,确保它的定义:

// in .h you would have: 
     extern NSString* const output; // << declaration 

// in .m you would have: 
     NSString * const output = [[NSString alloc] initWithBytes:buffer length:len encoding:NSASCIIStringEncoding]; // << definition