[英]Objective-C: NSClassFromString() use with navigation controller?
我想使用NSClassFromString()將字符串傳遞給,以便確定將哪個類推送到導航控制器上。 問題是,我想將一個值傳遞給此類,這會導致錯誤,並且由於NSObject不是UIViewController類型類,因此嘗試推送視圖控制器也會導致錯誤。
Class screenClass = NSClassFromString(screen.name);
NSObject* newClass = [[screenClass alloc] init];
newClass.asset = asset; // Causes errors because asset not in NSObject
[self.navigationController pushViewController:newClass animated:YES];// newClass is an NSObject
[newClass release];
有沒有更好的方法來做我在這里嘗試的事情?
你可以做
UIViewController *newObject = (UIViewController *)[[screenClass alloc] init];
然后,警告將被刪除。
如果無法靜態鍵入變量,則不能使用點表示法。 如果所有可能的類均來自聲明該方法的一個公共類,則可以將其靜態鍵入為該類。 否則,您需要對asset
屬性使用accessor方法:
Class screenClass = NSClassFromString(screen.name);
id newClass = [[screenClass alloc] init]; // note that it's an id to indicate that we don't know what it'll be more specifically than an object
[newClass setAsset:asset];
[self.navigationController pushViewController:newClass animated:YES];
[newClass release];
假設asset
屬性的設置器是setAsset:
通常是)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.