1
2 #import <Foundation/Foundation.h>
3
4 @interface Person : NSObject
5
6 @end
7
8
9 @implementation Person
10
11 @end
12
13 @interface Person1 : NSObject
14 - (void)test;
15 @end
16
17
18 @implementation Person1
19
20 @end
21
22 @interface Person2 : NSObject
23
24 @end
25
26
27 @implementation Person2
28 - (void)test
29 {
30 NSLog(@"哈哈哈哈哈哈哈");
31 }
32 @end
33
34
35
36 int main()
37 {
38
39 // Person *p = [Person new];
40 // [p test]; // 编译 warning: 'Person' may not respond to 'test'
41 // // 链接 warning: 'Person' may not respond to 'test'
42 // // 运行 unrecognized selector sent to instance 0x7fe619c0fd30
43 // // 总结: 给对象发送不存在的消息,会导致程序异常退出。在移动终端上就是闪退
44
45
46
47
48 Person1 *p1 = [Person1 new];
49 [p1 test]; // 编译链接不出错。运行时候出错。
50 // 总结:OC是弱语法,在程序运行过程中,才会检查对象有没有实现相应的方法。
51
52
53 Person2 *p2 = [Person2 new];
54 [p2 test]; // 编译链接不出错。也能正常运行
55 // 总结:OC可以不写方法的声明。但是一般不会不写方法的声明。
56
57 return 0;
58
59 }
60