Objective-C с ARC: как привести от id * к NSString *? - PullRequest
0 голосов
/ 09 декабря 2011

У меня есть тип id* и я хочу преобразовать его в NSString * - с включенной ARC.Как мне этого добиться?

РЕДАКТИРОВАТЬ : Это не работает ... как мне адаптировать это, чтобы оно работало?

id *idStar = ...;
NSString **string2Star = (NSString **) idStar;
NSLog(@"%@", *string2Star);

1 Ответ

3 голосов
/ 09 декабря 2011

id * нельзя привести к NSString * ни при каких обстоятельствах.

Имейте в виду, что id уже является типом указателя; делая его эквивалентным не NSString, а NSString *.

Чтобы разыграть, вам нужно разыграть его на NSString **.

Изменить:

В случае, если вы представляете, приведение совершенно не нужно.

NSString *string2Star = *idStar;

должен делать хорошо; и даже в этом нет необходимости.

Имейте в виду, что тип переменной в Objective-C по сути является всего лишь подсказкой компилятору, чтобы он знал, какие методы вы планируете вызывать; и предупредит вас, если вы позвоните другим.

Фактическое отображение вызова метода все происходит во время выполнения; Это означает, что приведение довольно бессмысленно.

...