ARC 快速枚举Enumeration 属性错误
2015-01-15 20:47
183 查看
今天写了一个快速枚举:
for (NSString *key in [dict keyEnumerator]) {
id val = [dict objectForKey:key];
if ([keyMap objectForKey:key]) {
key = [keyMap objectForKey:key];
}
}
不幸的是编译出错啦。
错误提示信息:
Fast enumeration variables can't be modified in ARC by default;declare the variable __strong to allow this
以前这样写没有错,看错误提示时 在ARC情况下,变量的属性要声明为__strong
也就是说:
快速枚举变量在ARC下默认不能修改其引用属性,声明变量为__strong允许这样。
按照提示修改上面的语句:
for(__strong NSString *key in [dict keyEnumerator])
或者
for(NSString __strong *key in [dict keyEnumerator])
这样就可以正常运行了。
另外,OC中有一个专门的快速枚举的迭代器类NSEnumerator,这个类的使用方法如下:
//得到一个对应的enumerator对象
NSEnumerator * enumerator = [[dict keyEnumerator] reverseObjectEnumerator];
for(NSString * key = [enumerator nextObject];;)//遍历
{
id val = [dict objectForKey:key];
if ([keyMap objectForKey:key]) {
key = [keyMap objectForKey:key];
}
}
for (NSString *key in [dict keyEnumerator]) {
id val = [dict objectForKey:key];
if ([keyMap objectForKey:key]) {
key = [keyMap objectForKey:key];
}
}
不幸的是编译出错啦。
错误提示信息:
Fast enumeration variables can't be modified in ARC by default;declare the variable __strong to allow this
以前这样写没有错,看错误提示时 在ARC情况下,变量的属性要声明为__strong
也就是说:
快速枚举变量在ARC下默认不能修改其引用属性,声明变量为__strong允许这样。
按照提示修改上面的语句:
for(__strong NSString *key in [dict keyEnumerator])
或者
for(NSString __strong *key in [dict keyEnumerator])
这样就可以正常运行了。
另外,OC中有一个专门的快速枚举的迭代器类NSEnumerator,这个类的使用方法如下:
//得到一个对应的enumerator对象
NSEnumerator * enumerator = [[dict keyEnumerator] reverseObjectEnumerator];
for(NSString * key = [enumerator nextObject];;)//遍历
{
id val = [dict objectForKey:key];
if ([keyMap objectForKey:key]) {
key = [keyMap objectForKey:key];
}
}
相关文章推荐
- OC : NSFastEnumeration (快速枚举)
- 9.34.8.使用枚举循环属性 Using Enumeration to loop through Properties
- fast enumeration/快速枚举
- flash和javascript交互时 出现“对象不支持此属性或方法”错误的解决方法
- 属性名小写的错误.
- Windows XP+SP2系统属性的造假原理正文分析错误
- Asp.net Futures 工程新建页解决“请确保此代码文件中定义的类与“inherits”属性匹配”的错误
- 我的系统属性也个性(原作中有几处错误,为尊重原作特在原文最后更正)
- [技巧]快速查询由于“ORA: 无效列名”引发的错误
- image 的Css中的behavior属性导致 pure virtual function call 错误
- SQL 2005 Manager Studio关于属性QuotedIdentifierStatus 不可用于 UserDefinedFunction 的错误
- 属性参数 - 使用命名过的参数时的常见错误
- 分析器错误信息: 无法识别的属性“xmlns”的解决方法
- c# 枚举基础 与 枚举属性的访问
- AutoCAD 2009新功能介绍专题1——快速属性
- ASP.NET基础教程-DataView对象的属性、方法、枚举成员
- XML枚举一个节点的所有属性的方法
- Thin的DateChooser代码学习(关于js的函数参数为一个完整的函数以及“对象不支持此属性或方法”错误的解决)(原创,转载请声明)
- dwr 错误:对象不支持此属性或方法
- c# 枚举基础 与 枚举属性的访问