구현없이 NSObject
하위 클래스를 만들고 "WebView"라고 명명했습니다. 내 코드에서 NSClassFromString
을 사용하여이 클래스의 객체를 동적으로 인스턴스화 할 수 있어야합니다.iOS 용 WebView 금지 클래스 이름은 무엇입니까?
사소한 작업처럼 솔기가 있지만이 특정 클래스 이름 "WebView"에 문제가 있습니다. NSClassFromString()
같은 이음새가 특정 클래스 이름으로는 실패하지만 lldb를 사용하면 class1과 class2 설명을 모두 인쇄 할 수 있으며 둘 다 "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