Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone 如果通过xcode缺少库,则忽略代码分支_Iphone_Objective C_Ios_Xcode_Frameworks - Fatal编程技术网

Iphone 如果通过xcode缺少库,则忽略代码分支

Iphone 如果通过xcode缺少库,则忽略代码分支,iphone,objective-c,ios,xcode,frameworks,Iphone,Objective C,Ios,Xcode,Frameworks,在AdWhirl SDK(一种多ad网络组装)中,该框架的结构是这样的:如果您不从Google AdSense或AdMob额外导入附带的库,那么在编译和运行代码时,它将忽略这些代码分支。也就是说,框架中有一些代码需要运行AdSense SDK,但是如果不包括AdSense,它只会忽略这些代码,没有编译器错误或其他任何东西。没有用户要求的注释代码或类似的东西 我正试图构建一个具有类似需求的框架,但我一辈子都搞不清楚他们是如何做到这一点的。显然,默认情况是,由于缺少库,在编译时代码中会出现链接器错误

在AdWhirl SDK(一种多ad网络组装)中,该框架的结构是这样的:如果您不从Google AdSense或AdMob额外导入附带的库,那么在编译和运行代码时,它将忽略这些代码分支。也就是说,框架中有一些代码需要运行AdSense SDK,但是如果不包括AdSense,它只会忽略这些代码,没有编译器错误或其他任何东西。没有用户要求的注释代码或类似的东西


我正试图构建一个具有类似需求的框架,但我一辈子都搞不清楚他们是如何做到这一点的。显然,默认情况是,由于缺少库,在编译时代码中会出现链接器错误。如何导出具有此功能的框架(当前为.a文件)

当您执行以下操作时:

[[ClassName alloc] init]
实际上,您要做的是将
alloc
消息发送到
ClassName
元类,然后将
init
发送到元类试图返回的
ClassName
实例(或者如果元类因缺乏资源而返回
nil
,则不发送给任何人)

此外,Objective-C运行时是反射的。除此之外,这意味着您可以查询它,从类的字符串名称中查找元类。例如

Class metaclass = NSClassFromString(@"ClassName");
它返回指定的元类,如果该类不存在,则返回
nil
。综上所述:

id instance = [[NSClassFromString(@"ClassName") alloc] init];
如果应用程序知道此类类并且有合适的资源可用,则将为您提供该类的实例。在可选链接库的情况下,这是一种尝试获取类实例的方法,但如果未链接包含该类的库,则会安全地失败