Xcode中的-ObjC和-all_load

有时候使用第三方库的时候,需要在Xcode的Build Settings下Other Linker Flags里面加入-ObjC标志。

之所以使用该标志,和Objective-C的一个重要特性:类别(category)有关。根据这里的解释,Unix的标准静态库实现和Objective-C的动态特性之间有一些冲突:Objective-C没有为每个函数(或者方法)定义链接符号,它只为每个类创建链接符号。这样当在一个静态库中使用类别来扩展已有类的时候,链接器不知道如何把类原有的方法和类别中的方法整合起来,就会导致你调用类别中的方法时,出现"selector not recognized",也就是找不到方法定义的错误。为了解决这个问题,引入了-ObjC标志,它的作用就是将静态库中所有的和对象相关的文件都加载进来。

 

本来这样就可以解决问题了,不过在64位的Mac系统或者iOS系统下,链接器有一个bug,会导致只包含有类别的静态库无法使用-ObjC标志来加载文件。变通方法是使用-all_load 或者-force_load标志,它们的作用都是加载静态库中所有文件,不过all_load作用于所有的库,而-force_load后面必须要指定具体的文件。


本文转载自:http://www.th7.cn/Program/IOS/201403/181096.shtml

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/500047.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[前台]---ajax返回200成功,却进入error函数的解决方法

最近碰到一个问题,就是如题目所说,ajax在调用的时候,明明返回成功了,但js代码却走到了error中,最后发现是我返回的json格式不对,jQuery在1.4后,对ajax返回的json格式有了很强的限制,所以一定要用严格的JSON格式返回. 先上代码: jQuery.ajax({type: "POST",async: tr…

SpringMVC解决静态资源不能访问

解决: 直接在SpringMVC的xml文件中加一行配置: <mvc:default-servlet-handler/> 问题根源: 做项目迁移的时候,原来控制层的框架是Struts2,现在要换成SpringMVC,第一版是尽量少改动的移过去,保证功能都正常,第二版开始优化,于是: 原来项目的访问都是XXX.action,现在想…

CocoaPods版本升级

和往常一样使用CocoaPods管理一个基于FMDB的项目类库 命令行执行 $ pod install [!] The master repo requires CocoaPods 0.32.1 - 失败&#xff0c;提示需要CocoaPods 0.32.1版本 查看CocoaPods版本 $ pod --version 0.29.0 确实需要更新了 命令行更新&#xff08;安装&…

[前台]---js获取input标签中name相同的各个value值

在页面form表单中,经常会有相同name的多个input标签,在提交表单前需要对这些input的value值做校验,就要在js中拿到这些值,下面这个方法,亲测是最实在的: 页面:<input type"hidden" name"myname" value"aa"/><input type"hidden&qu…

Objective-C消息转发

我们要通过一个小例子来简单、通俗的理解一下什么是消息转发以及如何消息转发&#xff0c;希望看完这篇文章时大家会彻底的明白OC的消息。首先&#xff0c;你需要知道这两个概念&#xff1a; OC中调用方法就是向对象发送消息。 比如 &#xff1a; 1[person run];这实际上这是在…

[前台]---js中方法的强制返回和java中方法的强制返回

java写惯了,偶尔写个js,真是各种坑,比如方法中的return的效果就不一样: java中: public static void main(String[] args) {String[] a {"1","2","3"};for (String s : a) {if(s.equals("1")){System.out.println(s);return;//方法中…

Create groups 与 Create folder references的区别

选择了Create groups方式添加了一个文件&#xff0c;我们会发现被添加进来的文件&#xff0c;文件夹是黄色的。选择了 Create folder references方式添加进来的文件的文件夹是蓝色的。那么两种方式有什么区别呢&#xff1f; 1.使用Create groups 为任何新增加的文件夹创建组&a…

[前台]---js重复上传一张图片两次,第二次失败的解决办法和思路

js重复上传一张图片两次,第二次会失败,解决办法就是修改input的value值. 先上代码: <input style"display:none" type"file" id"aaa" onchange"newuploadImageForDetail(event)" accept"image/jpg, image/jpeg, image/gif, …

XMPP协议简介

XMPP是一种基于标准通用标记语言的子集XML的协议&#xff0c;它继承了在XML环境中灵活的发展性。因此&#xff0c;基于XMPP的应用具有超强的可扩展性。经过扩展以后的XMPP可以通过发送扩展的信息来处理用户的需求&#xff0c;以及在XMPP的顶端建立如内容发布系统和基于地址的服…

[前台]---关于input标签的value值

碰到这个情况,先上代码: <input type"hidden" id"input-shoppingListType" value0/> 这样写的话,最终在获取value的值的时候,平时都是0,直到有一次成了’0/’,发现了吗?把后面的斜杠也给拿到了,最终导致报错了 结果: <input type"hidde…

布尔类型(boolean/Boolean)自动生成的get方法需要注意的小细节

idea会自动生成get/set方法的, 对于布尔类型,要非常注意生成的get方法,到底是is开头还是get开头. 先说结论: 1.Boolean类型,生成的get方法是get开头的(建议使用这个). 2.boolean类型,生成的get方法是is开头的(用这个最好重写getXxx()格式的方法). 以下这个例子,可以验证这…

[前台]---js中去掉双引号或者单引号

在js中有这么一种情况,就是需要在function中动态的给标签加属性值,这时候如果带有引号,可能会导致加的属性值不是想要的,这时只需要去掉引号就可以,建议用下面这个: var a "双引号字符串"; a a.replace("\"","").replace("\"&q…

XMPP扩展协议详解

基本的jabber客户端必须实现以下标准协议&#xff08;XEP-0211&#xff09; 1、RFC3920 Core http://tools.ietf.org/html/rfc3920 2、RFC3921 Instant Messaging and Presence http://tools.ietf.org/html/rfc3921 3、XEP-030 Service Discovery http://www.xmpp.org/extensio…

[前台]---图片上传和校验

记一次简单的图片上传验证: 页面:<input type"file" id"hiddenFile" onchange"uploadImage(event)" accept"image/jpg, image/jpeg, image/gif, image/png">立即上传图片js: function uploadImage(e) {//图片的提前校验,如果返…

FMDB简介

FMDB在SQLite基础上封装。 FMDB会在编译的时候知道你是用的ARC还是MRC&#xff0c;然后进行相应处理。使用方法一、FMDB有三个主要的类1.FMDatabase – 表示一个单独的SQLite数据库。 用来执行SQLite的命令。2.FMResultSet – 表示FMDatabase执行查询后结果集3.FMDatabaseQueue…

[前台]---js+jquery校验姓名,手机号,身份证号

记一次前台验证姓名,手机号,身份证号的代码,复制即用,前提是有引入jquery. var name "姓名"if(!is_forbidName(name)){alert("姓名有误!");}var phone "18888888888";var validateTel /^1[23456789]\d{9}/;if(!validateTel.test(phone)){aler…

React Native新手引导

序言 本教程希望让您快速熟悉使用React Native来编写iOS和Android App的技巧。如果你希望知道React Native是什么以及为什么Facebook打造了它&#xff0c;可以读读这篇博文 我们这里假设你已经有了使用React编写Web应用程序的经验。如果还没有&#xff0c;建议你可以先从React官…

[设计模式] ------ 代理模式

几句话讲明白代理模式 静态代理&#xff1a; 1.定义 个接口A,接口有个方法methodA(); 2.定义一个实现类B,实现这个接口A,并重写方法methodA(); 3.定义一个代理类C,也实现接口A,并将类B作为他的一个属性&#xff0c; 然后C也重写方法methodA();但方法的实现为B&#xff0c;并调…

React Native使用指南-原生模块

有时候App需要访问平台API&#xff0c;但React Native可能还没有相应的模块封装&#xff1b;或者你需要复用Objective-C、Swift或C代码&#xff0c;而不是用JavaScript重新实现一遍&#xff1b;又或者你需要实现某些高性能、多线程的代码&#xff0c;譬如图片处理、数据库、或者…

服务器启动报错:One or more listeners failed to start. Full details will be found in the ...

idea本地启动web项目时 报错如下: One or more listeners failed to start. Full details will be found in the appropriate container log file 我的解决方案: 增加一步,配置artifacts 具体如下: 这个地方选择自己本地的web项目文件夹 都配置完然后Apply下,这个都配置好…