f(sixleaves) = sixleaves

重剑无锋 大巧不工

  C++博客 :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理 ::
  95 随笔 :: 0 文章 :: 7 评论 :: 0 Trackbacks
 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 
posted on 2015-04-30 14:43 swp 阅读(95) 评论(0)  编辑 收藏 引用 所属分类: objective-c

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理