当前位置:  开发笔记 > 编程语言 > 正文

如何分配动态类型对象

如何解决《如何分配动态类型对象》经验,为你挑选了1个好方法。



1> Louis Gerbar..:

我不知道你在那里尝试的代码是什么,它在语法上是无效的,操纵视图与你的问题无关.无论如何,如果你真的不知道这种类型,你通常会使用"id",这种类型转换为codegen的"void*".它具有特殊属性,假定它接收任何消息,因此它不会触发未知消息的编译器警告.

为了实例化一个类,你只需要为它保持"Class"对象.在Objective C中,类的所有实例都引用一个Class对象(遗留运行时中的isa指针),它也响应方法.换句话说,在以下代码中:

NSArray *myObject = [[NSArray alloc] init];

NSArray实际上是一个对象.所以这将产生等效的代码结果:

Class myClass = [NSArray class];
NSArray *myObject = [[myClass alloc] init];

甚至

Class myClass = NSClassFromString(@"NSArray");
NSArray *myObject = [[myClass alloc] init];

它使用NSClassFromString函数,它进入运行时并找到一个具有您传入的名称的类.

如果使用类getter,所有对象都返回它们的类,因此要实例化一个与现有对象相同的类的对象,如下所示:

- (void) leakObjectWithSameClassAs:(id)object {
    [[[object class] alloc] init];
}

推荐阅读
虎仔球妈_459
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有