Object-c 学习总结

一、语言基础

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;

@end

int 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 基本数据类型 


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值