天天看點

OC的類方法、對象方法和函數

OC語言中的方法和函數是有差別的:類内部叫方法,單獨定義的叫函數,定義的格式也不同

類方法:+ (void) 方法名、對象方法:- (void) 方法名、函數:void 函數名(參數清單)

1 #import <Foundation/Foundation.h>
 2 
 3 void test();//test函數的聲明
 4 
 5 //類Person的聲明
 6 @interface Person : NSObject
 7 + (void)test;//類方法
 8 - (void)test;//對象方法
 9 - (int)sumWithNum1 : (int)num1 andNum2 : (int)num2;//帶參數對象方法的規範定義
10 
11 @end
12 
13 //類Person的實作
14 @implementation Person
15 + (void)test
16 {
17     //類方法中可以通過建立對象調用對象方法
18     Person *pp = [Person new];
19     [pp test];
20     
21     test();
22     NSLog(@"this is +test");
23 }
24 - (void)test
25 {
26     test();
27     //[Person test];//對象方法中可以調用類方法
28     NSLog(@"this is -test");
29 }
30 - (int)sumWithNum1 : (int)num1 andNum2 : (int)num2
31 {
32     return num1 + num2;
33 }
34 @end
35 
36 
37 int main()
38 {
39     
40     Person *p = [Person new];
41     [Person test];
42     [p test1];
43 }
44 
45 //函數的實作
46 void test()
47 {
48     NSLog(@"這是函數");
49 }      

結論:1->類方法名,對象方法名,函數名可以一樣,他們的調用者不同是以互不影響

   2->函數是不可以調用類方法或者對象方法的

   3->函數可以被類方法和對象方法調用,類方法内部還可以通過建立該類的對象調用對象方法