加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

objective-c – 在iOS中以编程方式实例化类

发布时间:2020-12-14 19:58:58 所属栏目:百科 来源:网络整理
导读:我正在开发一个大型iOS项目,设计并不像我希望的那样好,但我必须坚持下去. (生活有时可能是个婊子). 问题是我们有一个基本上让你浏览目录的库.您有一个过滤器,您可以在其中指定某个搜索条件,并且您会看到一个列表,您可以按下您感兴趣的项目.当您按某个项目时,
我正在开发一个大型iOS项目,设计并不像我希望的那样好,但我必须坚持下去. (生活有时可能是个婊子).

问题是我们有一个基本上让你浏览目录的库.您有一个过滤器,您可以在其中指定某个搜索条件,并且您会看到一个列表,您可以按下您感兴趣的项目.当您按某个项目时,您可以看到它的更详细描述.

该公司是一份工作,将这个相同的软件销售给拥有不同目录的许多不同公司.我们的想法是,库具有所有主要功能,并且使用它的项目可能以某种方式扩展或完全覆盖某些给定的接口.

举个例子,假设我的库有2个类来管理2个视图.它们将是“FilterViewController”和“DetailsViewControllers”.在代码的某个地方,这个类被实例化.它看起来像这样

我的方法是这样的:

ProjectA方面

// Here I configure the library
Library.FilterViewClass = ProjectAFilterViewController;
Library.DetailsViewClass = ProjectADetailViewController;

ProjectB方面

Library.FilterViewClass = ProjectBFilterViewController;
Library.DetailsViewClass = nil;

图书馆方面

// Did the user configure the library?
if(self.FilterViewClass == nil){
    // I alloc the default ViewController
    myFilterViewController = [[FilterViewController alloc] init]; 
}else{
    // Here I would like to alloc the custom ViewController
    myFilterViewController = [[Library.FilterViewClass alloc] init]; // DaProblem!
}

这种方法的问题是我实际上不知道是否可以以编程方式实例化对象.或者至少我不知道如何.也许我使用错误的方法,一些方向将不胜感激. Txs提前!

解决方法

要从字符串中获取类,您可以使用此函数

Class cl = NSClassFromString(@"MyClass");

要获取现有变量的类只需调用类方法.

Class cl = [obj class]; // assuming obj1 is MyClass

现在您可以创建MyClass的实例

MyClass *myClass = (MyClass*)[[cl alloc] init];
...
[myClass release];

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读