Я создал подкласс NSObject
без какой-либо реализации и назвал его «WebView». В моем коде мне нужно иметь возможность динамически создавать объекты этого класса, используя NSClassFromString
.WebView запрещенное имя класса для iOS?
Несмотря на то, что это похоже на тривиальное произведение, у меня возникают проблемы с этим конкретным именем класса «WebView». Это швы вроде NSClassFromString()
не подходит для данного имени класса, но с lldb я могу печатать описания класса 1 и класса 2, и для обоих он говорит «WebView».
Кто-нибудь еще испытывает такую же проблему? Есть ли список запрещенного имени класса, например, переменные и т. Д.?
@interface WebView : NSObject
@end
@implementation WebView
@end
@implementation ViewController
- viewDidLoad {
Class class1 = [WebView class];
Class class2 = NSClassFromString(NSStringFromClass(class1));
NSAssert(class1 == class2, @"Classes not equal"); // FAIL
}
@end
И еще один пример:
[class1 new]; // OK
[class2 new]; // EXC_BAD_ACCESS (code=2, address=0x0)
WebView - это частный класс, используемый в UIWebView внутренне, что может вызвать проблемы ... – Vladimir