ios - 为什么必须先初始化NSObject的.class-property才能对其进行初始化

标签 ios objective-c uiimageview

例如,如果我说:

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,因此.classnil返回给您。

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/

相关文章:

ios - UISplitViewController 的主细节 Controller 的动画可见性

ios - Objective c 只允许两个单词之间有空格,前后都不允许

ios - 从 App Delegate 打开 Controller

iOS CAEmitterCell烟花效果

ios - 带有通知问题的 Swift 暂停和重新创建计时器

ios - 将 ImageView 添加为自定义 UIControl 中的 subview

ios - 是否可以通过在 iOS swift 中画线来对图像进行分组?

ios - 从堆栈中的下一个类错误地调用了 UIKeyboardWillShowNotification

iphone - FbRequest方法后iPhone应用程序崩溃

ios - 带有 ImageView 的 UIScrollView 不垂直滚动