7 allocation dynamic objective-c
我在objective-c中看到了很多关于动态类型的讨论.但我还没有看到任何我认为应该是的例子.
假设我有一个泛型函数应该兼顾两个对象(一个被分配而另一个被释放),并且调用对象将它自己附加到新分配的对象.两者都继承自class0
如果你认为它会解释一些东西,请随意解释这个你想要的!
如果在运行时选择了类,我如何处理参数列表(?现在是一个占位符)如何在运行时之前分配一个没有定义类的对象?
-(void) juggle:(?*)objclass1:(?*)objclass2{
? temp = [? alloc] init];
objclass1 = temp;
[temp release];
[objclass2.view removefromsuperview];
[self.handle insertsubview:objclass1.view];
}
Run Code Online (Sandbox Code Playgroud)
Lou*_*arg 19
我不知道你在那里尝试的代码是什么,它在语法上是无效的,操纵视图与你的问题无关.无论如何,如果你真的不知道这种类型,你通常会使用"id",这种类型转换为codegen的"void*".它具有特殊属性,假定它接收任何消息,因此它不会触发未知消息的编译器警告.
为了实例化一个类,你只需要为它保持"Class"对象.在Objective C中,类的所有实例都引用一个Class对象(遗留运行时中的isa指针),它也响应方法.换句话说,在以下代码中:
NSArray *myObject = [[NSArray alloc] init];
Run Code Online (Sandbox Code Playgroud)
NSArray实际上是一个对象.所以这将产生等效的代码结果:
Class myClass = [NSArray class];
NSArray *myObject = [[myClass alloc] init];
Run Code Online (Sandbox Code Playgroud)
甚至
Class myClass = NSClassFromString(@"NSArray");
NSArray *myObject = [[myClass alloc] init];
Run Code Online (Sandbox Code Playgroud)
它使用NSClassFromString函数,它进入运行时并找到一个具有您传入的名称的类.
如果使用类getter,所有对象都返回它们的类,因此要实例化一个与现有对象相同的类的对象,如下所示:
- (void) leakObjectWithSameClassAs:(id)object {
[[[object class] alloc] init];
}
Run Code Online (Sandbox Code Playgroud)