2014-02-17 2 views
3

У меня есть сетевой код, который использует NSStream, и я хочу добавить безопасность. Я попытался применить the documentation по этому вопросу. Я добавил следующие строки в мой код рабочей сети:Настройка безопасности SSL или TLS на NSStream

[input setValue:NSStreamSocketSecurityLevelNegotiatedSSL forKey:NSStreamSocketSecurityLevelKey]; 
[output setValue:NSStreamSocketSecurityLevelNegotiatedSSL forKey:NSStreamSocketSecurityLevelKey]; 

Код инициализации:

-(Connection*) initWithInput:(NSInputStream*) input Output:(NSOutputStream*) output Delegate: (id <ConnectionDelegate>) delegate{ 
self = [super init]; 
if (self) { 

    a_delegate=delegate; 

    //set security 
    [input setValue:NSStreamSocketSecurityLevelNegotiatedSSL forKey:NSStreamSocketSecurityLevelKey]; 
    [output setValue:NSStreamSocketSecurityLevelNegotiatedSSL forKey:NSStreamSocketSecurityLevelKey]; 

    a_input=input; 
    a_output=output; 

    //Set delegate to self 
    [a_input setDelegate:self]; 
    [a_output setDelegate:self]; 

    //Schedule in run loop 
    [a_input scheduleInRunLoop:[NSRunLoop currentRunLoop] forMode:NSDefaultRunLoopMode]; 
    [a_output scheduleInRunLoop:[NSRunLoop currentRunLoop] forMode:NSDefaultRunLoopMode]; 

    //open streams 
    [a_input open]; 
    [a_output open]; 

} 
return self; 
} 

Но когда мой объект Connection инициализируется, я получаю сообщение об ошибке и сеть не работает :

[<__NSCFInputStream 0x60800028e970> setValue:forUndefinedKey:]: 
this class is not key value coding-compliant for the key kCFStreamPropertySocketSecurityLevel. 

Есть ли что-нибудь, что я делаю неправильно?

ответ

4

Хорошо, я нашел проблему, я должен использовать setProperty: forKey: вместо setValue: forKey:

Смежные вопросы