我知道在 C 中将一个变量转换为另一种类型会告诉编译器该变量在内存中具有该类型和大小。
例子:
int* a = (char*)b;
取 b 的值(这是一个 1 字节的内存地址)并将其存储在 4 字节的变量 a 中。(如我错了请纠正我)
转换一个 Objective-C 对象是如何工作的?我也明白每个对象只是一个 C 结构,其中包含指向其类、实例变量列表等的指针。
如果我有一个名为 MyView 的 UIView 子类的类,并且我传递了一个指向 UIView 的指针,也许是一个方法参数,我这样做:
-(id)setupThisViewForMe:(UIView*)aView {
MyView* newView = (MyView*)aView;
newView = [[MyView alloc]initWithFrame:CGRectMake(0.0f,0.0f,100.0f,100.0f)];
[newView takeOverTheWorldWithMyMethodInSubclass];
return newView;
}
编译器在编译时到底在做什么?