Object-c 学习总结

来源:互联网 发布:网络投资诈骗怎么办 编辑:程序博客网 时间:2024/06/12 00:02

一、语言基础

1、注释Object-C 中的注释 和 c++ 一样为  // 单行注释, /**/ 多行注释

2、包含头文件 用 #import<系统库头文件> #import "自己的头文件"

3、类

3.1 类的申明

@interface 类名: 父类名 <遵循的协议1, 遵循的协议1>{@public@private@protected  数据成员}-(返回类型) 实例函数名 :(参数一类型) 参数名;+(返回类型) 类函数名 : (参数一类型) 参数;@end

3.2类的实现

@implementation 类名+(函数返回值) 类函数名:(参数类型) 参数名{        函数实现;}-(函数返回值) 实例函数名:(参数类型) 参数名{        函数实现;}@end

3.3 对象实例化和初始化

类名 *对象名 = [类名 alloc]; //实例化一个对象[对象名 init]; //初始化对象上面两个操作可以缩写为类名 *对象名 = [[类名 alloc] init]; //实例化一个对象并初始化。
3.4 对象释放

//创建的对象要记得释放否则就会导致内存泄露[对象名  release];

3.5 对象方法的调用

//object-c 中对象方法的调用被称作向消息接受体发送消息具体使用方法为[消息接收体  消息名];

3.6 对象成员数据的访问

实例对象的数据成员默认是 @protected 权限的。

1、自定义方法获取/设置 成员数据

对数据成员的访问可以通过对象的成员方法,object-c 中成员方法和成员数据的名字是可以相同的。

2、通过 存取器方法,自动生成 获取/设置 成员数据方法

2.1 在类申明部分将实例变量 通过 @property 指令标识属性

2.2 在类实现部分 通过 @synthesize 指令定义

example: 

@interface TestClass : NSObject{    int member;}@property int member;@end@implementation TestClass@synthesize member;@end
通过这个方法就自动生成了 member 的 set 和 get 方法。

#import <Foundation/Foundation.h>@interface TestClass : NSObject{    int Value;}@property int Value;@end@implementation TestClass@synthesize Value;@endint main(int argc, const char * argv[]){    NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];        TestClass *a = [[TestClass alloc] init];    //[a setValue: 10];        NSLog(@"Hello world!! %i", [a Value]);        [pool drain];    return 0;}

3.7 self 关键字,super 关键字

self 关键字相当于 c++ 中得 this

super 关键字代表类的父类。


3.8 对象初始化


3.9 对象释放

重载 NSObject 中得 dealloc 方法实现释放对象中实例化的对象,防止内存泄露

需要注意的是在重载了 dealloc 方法时还是要记得调用父类的 dealloc 方法释放父类的对象释放操作。


3.10 分类(通过分类为类扩展功能)

@interface 已有类类名 (分类名)-(返回值类型) 扩展方法名:(参数类型) 参数名; @end@implementation 已有类类名 (分类名)-(返回值类型) 扩展方法名:(参数类型) 参数名{方法实现;}@end
注意: 1、分类只可以访问原类的成员变量,不能增加。

           2、分类可以重载原类的方法,但是这种设计是不合理的(这么做了后原来的方法就访问不到了)。重载类的方法应该通过继承实现(这样还能通过 super 访问到原来的方法)。

           3、可以创建很多分类。

           4、分类不一定要实现申明的方法。可以只是先申明但是不实现。

         

3.11 协议

协议用来规范接口的。相当于c++ 中得抽象基类,java 中得interface 接口。

@protocol 协议名-(返回值类型) 方法名:(参数类型) 参数名;@end


4、数据类型和表达式

object-c 中的基本数据类型和c基本一致:(其中比较特殊和关键的类型为 id 它可以存储任意类型的数据它使objectc 实现多态的关键)

objectc 基本数据类型 


0 0
原创粉丝点击