例如,如果我说:
UIImageView *imageView;
imageView = [[UIImageView alloc] init];
NSLog(@"%@", imageView.class);
它将按预期记录
UIImageView
。现在,如果我改为以在分配对象时使用UIImageView的
.class
属性的方式编写代码(在第0行将其声明/定义为UIImageView),它将记录(null)
UIImageView *myImageView;
myImageView = [[myImageView.class alloc] init];
NSLog(@"%@", myImageView.class);//logs (null)
即使我在读取对象的
.class
值的同时将其强制转换为UIImageView,当我稍后再登录记录该类的值时,我仍然会得到(null)
UIImageView *myImageView;
myImageView = [[((UIImageView *)myImageView).class alloc] init];
NSLog(@"%@", myImageView.class);//logs (null)
最佳答案
由于您尚未初始化myImageView
,因此.class
将nil
返回给您。
UIImageView *myImageView;
myImageView = [[myImageView.class alloc] init]; // didn't initialize myImageView
NSLog(@"%@", myImageView.class);//logs (null)
所以如果你想做这样的事情:
myImageView = [[NSClassFromString(@"UIImage") alloc] init];
NSLog(@"%@", myImageView.class);//logs (UIImage)
关于ios - 为什么必须先初始化NSObject的.class-property才能对其进行初始化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39061642/