IOS語言總結

本文主要介紹和C++不一樣的地方。java

一、類的定義:c++

一個類有兩個文件一個.h還有一個.m文件編碼

 1 #import <Foundation/Foundation.h>
 2 
 3 
 4 @interface MyClass : NSObject {
 5 @public
 6     int _a;//公開方法
 7     NSString *_name;
 8 @private
 9     int _b;//私有方法
10 }
11 - (void)test; //實例方法
12 + (void)static_test;//靜態方法
13 @end

頭文件中內容如上。一個類的聲明用@interface開頭@end結尾。atom

大括號中間的成員變量,能夠表示public和private還有protected。objc的推薦方式是成員變量前面加「_」。spa

方法分紅兩種,若是是實例方法,也就是非靜態的方法必須以「-」開頭,若是是靜態方法必需要以「+」開頭。code

 1 #import "MyClass.h"
 2 
 3 
 4 @implementation MyClass {
 5     int a;
 6     float b;
 7 
 8 }
 9 - (void)test {
10 
11 }
12 
13 + (void)static_test {
14 
15 }
16 
17 
18 @end

m文件相似c++中的cpp文件,一個文件以@implementation開頭以@end結尾。對象

大括號中間能夠聲明一些變量,這些變量只能在本文件中使用,有點相似於C的全局靜態變量,不過我不明白這個和h文件中的私有變量有什麼區別?blog

二、鍵值編碼it

@interface User : NSObject
@property(nonatomic, copy) NSString *name;
@property(nonatomic, copy) NSString *pass;


@end
1     User *user = [[User alloc] init];
2     [user setValue:@"jack" forKey:@"name"]; //鍵值編碼
3     [user setValue:@"123" forKey:@"pass"];

相似於java的反射獲取成員變量,不過更加方便。io

三、類別(category)

1 @interface User (u)
2 -(void) login;
3 @end
[user login];

相似於的C#的拓展方法。

四、擴展 和類別同樣,不過沒有()中間的類了

五、委託

 1 @protocol Mydelegate//協議的聲明
 2 
 3 - (void)Fun;
 4 
 5 @end
 6 
 7 @interface ClassA : NSObject {
 8 
 9     id <Mydelegate> delegate;//聲明一個委託對象,咱們要把事情委託給實現Mydelegate協議的類
10 
11 }
12 @property(assign,nonatomic) id<Mydelegate> delegate;
13 
14 - (void)FunToOther;
15 @end
 1 @implementation ClassA {
 2 
 3 }
 4 
 5 - (id)init {
 6 
 7     delegate = [ClassB alloc];
 8     return self;
 9 
10 }
11 
12 - (void)FunToOther {
13 
14     [delegate Fun];//將消息發送給委託去處理
15 
16 }
17 
18 @end
1 @implementation ClassB {
2 
3 }
4 -(void) Fun{
5     NSLog(@"BBBBBBB");
6 
7 }
8 @end

 

1 ClassA *a1 = [[ClassA alloc] init];
2     [a1 FunToOther];

這個就和C#中的委託時一個意思

相關文章
相關標籤/搜索