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