OC开发之——弱语法(15)
一 弱语法说明
- OC是在运行过程中才会检测对象有没有实现相应的方法(动态监测),
- 即使没有写方法的实现,代码编译、连接过程中只有警告,运行时会崩溃
- 如果手机上运行这样的代码,运行过程中就造成闪退
二 现象说明
2.1 类中方法没有声明与实现或者只有声明没有实现时
编译时
1
2
3OC-弱语法.m:14:8: warning: 'Person' may not respond to 'test'
[p test];
~ ^运行时
1
2-[Person test]: unrecognized selector sent to instance 0x7ff900c0a290
*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[Person test]: unrecognized selector sent to instance 0x7ff900c0a290'
2.2 类中方法没有声明有实现或者有声明与实现
- 没有警告信息,程序正常运行
2.3 类没有声明(@interface),只有实现(实现继承NSObject)
1 | warning: cannot find interface declaration for 'Person' |
三 代码示例
1 | #include <Foundation/Foundation.h> |