2011-12-09 53 views
0

我有一個id*類型,並希望將其轉換爲NSString * - 啓用ARC。我如何實現這一目標?與ARC的Objective-C:如何從ID *轉換到NSString *?

編輯: 這是行不通的......我應該如何調整它使其工作?

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

'(NSString *))idStar'不會編譯(太多''''')。有錯字嗎? – kennytm

+0

是的,有一個錯字,謝謝 - 但這不是問題... – swalkner

+1

是的,我正在使用' - (BOOL)validateValue:(id *)value forKey:(NSString *)key error:(NSError **)錯誤',因此'id *'已經提供... – swalkner

回答

3

id *不能在任何情況下被強制轉換爲NSString *

請記住,id已經是一個指針類型;使其不等於NSString,而是等於NSString *

爲了施放,您必須將其施放到NSString **

編輯:

在您演示的情況下,中投是完全不必要的。

NSString *string2Star = *idStar; 

應該做的很好;即使這是不必要的。

請記住,Objective-C中的變量類型基本上只不過是提示編譯器讓它知道你打算調用哪些方法;並警告你,如果你打電話給不同的人。

實際的方法調用映射都發生在運行時;這意味着演員陣容毫無意義。

+0

謝謝 - 請參閱我的編輯;我怎麼能做到這一點? – swalkner

+0

你還沒有將它轉換爲NSString **。 – Sulthan

+0

另一個錯字,抱歉 - 仍然無法正常工作:「指向非常量類型NSString *的指針沒有明確的所有權」 – swalkner