Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >使用ARC访问forwardInvocation方法?

使用ARC访问forwardInvocation方法?
EN

Stack Overflow用户
提问于 2011-10-22 10:53:59
回答 1查看 1.1K关注 0票数 2

我正在用Objective-C编写一个OpenStruct的克隆,使用forwardInvocation:。然而,编译器显然没有意识到编译时的转发。使用ARC编译会给我大量的警告。

代码是开源的,可以在Github上获得,但目前是使用-fno-objc-arc.编译的。如果有人能看看我如何使这个ARC兼容,我将不胜感激。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-11-03 22:21:14

我试过这段代码:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
OpenStruct *myStruct = [[OpenStruct alloc] initWithDictionary:myDictionary];
NSLog(@"%@ says %@", @"Cow",  [myStruct cowSound]);

无论是否使用ARC,使用LLVM3.0或LLVM GCC 4.2,我都会收到警告或错误。我认为您误解了forwardInvocation:仍然需要在某种级别上声明方法,即使只是在您要发送消息的类的类别(@interface)中声明。

例如,当您这样做时:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[someObject doSomething];

如果没有在任何地方声明doSomething,那么这至少会生成一个警告("someObject可能不会响应doSomething"),而不管someObject类是否实现了forwardInvocation。正如您所注意到的,编译器确实没有意识到转发,而且它也不能依赖您的forwardInvocation实现来保证消息传递。无论有没有ARC,LLVM3.0都可能会产生错误,因为ARC的开发目标是在更多的编译器错误方面出错,而不是运行时问题。

现在,您仍然可以向没有实现方法的对象发送消息。例如,通过使用Objective-C运行时方法objc_msgSend或通过NSInvocation。但这使您计划创建的简单易用的界面变得空洞。

顺便说一句,您的OpenStruct使用示例并没有真正证明为什么与struct getValueForKey:@"moo";…这样的简单访问器相比,通过消息传递访问动态结构更简单。如果你仔细考虑过这一点,那么struct moo比第一种方法给用户带来的好处很少,甚至没有好处。"moo“方法是动态的(字符串或转发的消息),并且不会在运行时捕获拼写错误。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7858980

复制
相关文章
JSON数据获取指南!
在互联网时代,数据是金钱的来源。然而,要从海量的网页中提取需要的数据并不容易。本文将带你了解如何使用Node.js编写简易爬虫程序,帮助你轻松获取并处理JSON数据,让你不再为数据发愁。
用户614136809
2023/09/25
3840
jsonp获取json数据
这两天做微信端JS接口,当时遇到的第一个问题就是权限验证的参数请求,当你请求access_token等的时候,就会存在跨域问题:然后在网上查了,采用ajax的jsonp进行跨域请求,后来报错了,返回的结果错误。然后认真看了一下文档,发现ajax的jsonp返回的数据是callback(json),卡到这里。最后同时为了安全的考虑,我就将这一部分的权限验证参数在后端做,然后前端请求,这样就避免了跨域,同时将安全考虑进去了。
Rattenking
2021/01/29
2.4K0
burpsuite 无法获取本地数据
当Firefox和burpsuite设置代理地址127.0.0.1,端口:80内容可以显示在firefox网页而无法在burpsuite显示,求教是什么原因?
用户7446386
2020/06/09
2.2K0
Jquery 使用getJSON 获取json数据
1.先引用jq获取下载到本地 CDN地址:https://code.jquery.com/jquery-latest.js
Alone88
2019/10/22
3.5K0
zabbix的server无法获取数据
背景 部署完Zabbix agent之后,Server无法获取到数据 报错 服务端 [root@hf-01 ~]# zabbix_get -s 192.168.202.131 -p 10050 -k 'my.estab.count' zabbix_get [3088]: Get value error: cannot connect to [[192.168.202.131]:10050]: [113] No route to host [root@hf-01 ~]# 分析 服务端ping
运维小白
2022/01/06
1.7K0
Selenium+BeautifulSoup+json获取 Script 标签内的 json 数据
Selenium爬虫遇到 数据是以 JSON 字符串的形式包裹在 Script 标签中, 假设Script标签下代码如下:
诡途
2022/05/09
3.3K0
BeautifulSoup 获取 Script 标签内的 json 数据
有时候,我们可能会遇到数据是以 JSON 字符串的形式包裹在 Script 标签中,此时使用 BeautifulSoup 仍然可以很方便的提取。
happyJared
2019/11/03
4.7K0
JavaScript 递归遍历json串获取相关数据
url: "/home/level4Menu1",
授客
2019/11/18
3.4K0
JavaScript 递归遍历json串获取相关数据
python-获取URL中的json数据
数据源为某系统提供的URL,打开是json文件,python代码获取如下: URL替换成自己的即可。 import urllib.request def get_record(url): resp = urllib.request.urlopen(url) ele_json = json.loads(resp.read()) return ele_json if __name__ == '__main__': print(get_record('http://abc.co/
py3study
2020/01/16
5.5K0
Js解析Json数据获取元素JsonPath与深度
JsonPath 是一种信息抽取类库,是从JSON文档中抽取指定信息的工具,提供多种语言实现版本,包括:Javascript, Python, PHP 和 Java,JsonPath 对于 JSON 来说,相当于 XPATH 对于 XML。
大道七哥
2020/03/28
13.6K0
Js解析Json数据获取元素JsonPath与深度
php的json_decode函数无法解析json
作者:matrix 被围观: 5,526 次 发布时间:2014-09-04 分类:零零星星 | 9 条评论 »
HHTjim 部落格
2022/09/26
2K0
[接口测试 - 基础篇] 04 无法绕过的json解析
概述 我们先看一下什么是json。 JSON(JavaScript Object Notation, JS 对象标记) 是一种轻量级的数据交换格式。它基于 ECMAScript (w3c制定的js规范)的一个子集,采用完全独立于编程语言的文本格式来存储和表示数据。 简洁和清晰的层次结构使得 JSON 成为理想的数据交换语言。 易于人阅读和编写,同时也易于机器解析和生成,并有效地提升网络传输效率。 JSON 语法规则 在javascript语言中,一切都是对象。因此,任何
苦叶子
2018/04/09
3.1K0
解决mybatis 无法映射 数据库 json字段的问题
1.前言 MySQL从5.7版本之后开始支持JSON数据类型,相比于JSON格式的字符串类型有如下优势:存储在JSON列中的JSON文档的会被自动验证。无效的文档会产生错误;最佳存储格式。存储在JSON列中的JSON文档会被转换为允许快速读取文档元素的内部格式。 2.背景 mybatis目前还不支持映射json的数据格式,需要我们自己进行增强 3.实现 对mybatis TypeHandler进行增强 3.1ListStringTypeHandler 核心代码 package com.xxx.xxx.pip
特特
2022/05/22
4.5K2
php – 通过curl从url获取JSON数据「建议收藏」
我试图通过curl连接从URL获取JSON数据.当我打开链接时:它显示{“version”:“N / A”,“success”:true,“status”:true}. 现在,我希望获得以上内容.
全栈程序员站长
2022/07/11
4K0
python flask里 post请求,JSON数据获取方式总结
#!flask/bin/python #encodig=utf-8 # _*_ coding:utf-8 _*_ # Writer : byz # dateTime : 2016-08-05 from flask import Flask, jsonify, request, abort import json app = Flask(__name__) @app.route('/ana', methods=['GET', 'POST']) def call_analysis(): print
用户1214487
2018/04/16
8.6K0
map怎么转json对象_json怎么获取map
JSON 对象保存在大括号内。就像在JavaScript中, 对象可以保存多个 键/值 对。Map对象保存键/值对,是键/值对的集合。任何值(对象或者原始值) 都可以作为一个键或一个值。Object结构提供了“字符串—值”的对应,Map结构提供了“值—值”的对应。
全栈程序员站长
2022/09/23
3.5K0
java后台设计简单的json数据接口,设置可跨域访问,前端ajax获取json数据
在开发的过程中,有时候我们需要设计一个数据接口。有时候呢,数据接口和Web服务器又不在一起,所以就有跨域访问的问题。 第一步:简单的设计一个数据接口。 数据接口,听起来高大上,其实呢就是一个简单的Serlvlet,在有get的请求的时候,返回我们要提供的数据就可以。现在JSON数据格式已经很普遍,因为很方便,所以我们做一个json数据的接口。直接看代码 先建立一个实体类,就是包装我们的数据的 bean/kapian.java package bean; public class kapian { /
ShenduCC
2018/04/27
3.7K0
java后台设计简单的json数据接口,设置可跨域访问,前端ajax获取json数据
vmware workstation无法获取IP
有时在安装好虚拟机后,dhclient会发现无法获取IP地址 原因,有可能是连接网络模式的冲突——>个人推测 解决办法: 这时候只需删除桥接模式和仅主机模式,只留下NAT模式 这时候在
运维小白
2018/02/06
2.5K0
vmware workstation无法获取IP
虚拟机无法联网 无法自动获取IP
突然有一天开发无法连接上虚拟机了,打开虚拟机先是发现无法联网,后来ifconfig连IP都没有了,只有一个127.0.0.1
叶茂林
2023/09/02
3310
点击加载更多

相似问题

JSON无法获取数据

22

无法获取json数据

22

无法从json获取数据

10

无法获取json对象数据

20

我无法获取JSON数据

16
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文