在iOS开发中告别未定义selector
2013-09-24 17:13
190 查看
objc和C++同为由C语言衍生出的OOP语言,但他们实现OOP的方式并不相同:在C++中,对象与方法在编译器绑定;而在objc中,称“方法”一词为“消息”,在程序运行时向对象发送消息,即运行期绑定。
两种方式各有优劣,C++注重性能,objc注重灵活。
然而运行期绑定给开发带来问题——编程时拼写错了方法名,编译器并不报错。笔者曾debug一小时,最后发现是方法名少写了个冒号。
为此笔者曾用过一个笨办法——断言某对象响应某方法,以此来排除错误可能。
这当然太过麻烦,其实有个简单的方法,可以上编译器报warning:
以Xcode 4为例,打开一个项目,在左侧导航栏中双击项目文件:
在弹出窗口中将GCC waring项undeclared selector设为yes:
两种方式各有优劣,C++注重性能,objc注重灵活。
然而运行期绑定给开发带来问题——编程时拼写错了方法名,编译器并不报错。笔者曾debug一小时,最后发现是方法名少写了个冒号。
为此笔者曾用过一个笨办法——断言某对象响应某方法,以此来排除错误可能。
这当然太过麻烦,其实有个简单的方法,可以上编译器报warning:
以Xcode 4为例,打开一个项目,在左侧导航栏中双击项目文件:
在弹出窗口中将GCC waring项undeclared selector设为yes:
相关文章推荐
- 在iOS开发中告别未定义selector
- 【iOS开发-图层】自己定义图层的两种方式
- IOS开发:关于performSelectorXXX的延迟的使用
- iOS开发笔记--[__NSArrayI addObjectsFromArray:]: unrecognized selector错误
- iOS 开发中的争议(一)类的成员变量应该如何定义?
- 【零基础学习iOS开发】【02-C语言】11-函数的声明和定义
- iOS 开发中的争议(一)类的成员变量应该如何定义?
- iOS开发之@Selector参数的传递
- RestKit:iOS开发必备,告别众多无聊代码
- iOS开发学习第七课——结构体的定义、声明和应用
- ios开发@selector的函数如何传参数/如何传递多个参数
- iOS开发,EALayout 无需反复编译,可视化实时界面,告别Storyboard AutoLayout Xib等等烦人的工具
- iOS开发中, '-[__NSCFConstantString size]: unrecognized selector sent to instance 0x10abccc00'
- iOS开发中属性常用关键字及定义
- iOS开发笔记--atomic与nonatomic,assign,copy与retain的定义和区别
- reason: '-[__NSCFNumber rangeOfCharacterFromSet:]: unrecognized selector sent to instance --iOS开发之崩溃
- iOS开发之Debug之unrecognized selector sent to instancexxx
- RestKit:iOS开发必备,告别众多无聊代码
- IOS开发】@selector 调用方法,传递多参数。
- iOS开发之 [NSNull length]:unrecognized selector sent to instance