IOS语言总结

本文主要介绍和C++不同的地方。

1、类的定义:

一个类有两个文件一个.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结尾。

大括号中间的成员变量,可以表示public和private还有protected。objc的推荐方式是成员变量前面加“_”。

方法分成两种,如果是实例方法,也就是非静态的方法必须以“-”开头,如果是静态方法必须要以“+”开头。

 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文件中的私有变量有什么区别?

2、键值编码

@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的反射获取成员变量,不过更加方便。

3、类别(category)

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

类似于的C#的拓展方法。

4、扩展 和类别一样,不过没有()中间的类了

5、委托

 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#中的委托时一个意思

posted @ 2015-03-22 00:25  HighFUN  阅读(274)  评论(0编辑  收藏  举报