Object-C 自学笔记 - 1

1.基本变量类型

类型 标示符 输出格式
整形 int %i
浮点 float %f
双精度 double %g
单字符 char %c

以上是基本类型,除此之外还有long, long long int等等类型,还有一个比较特殊的id类型,后面会介绍id类型

2. 基本算术,条件,循环 和C,C++基本一致

3. 注释方式

单行注释: // 多行注释: /* */

4.基本输出,日志打印

NSLog(@"使用NSLog进行日志的输出");

5.函数的定义

几种函数定义格式

  • 无参函数: -(return_type) function_name;
  • 单个参数: -(return_type) function_name:(type)param;
  • 多个参数: -(return_type) function_name:(type)param_1 [function_name](type)param_2;
    []为可写或者不写,如果有多个参数用空格进行分割 格式为[function_name](type)param,函数以;结尾
//例子 函数要放到class下才能使用
-(int) add:(int)a (int)b
{
    return a + b;
}

6.类的定义

@interface class_name : super_class

@property int a, b;  // 这样会自动生成SetA,A这两个函数,使用@property定义的变量需要在声明或者说实现里面@implementation里面使用@synthesize生成器生成
@class XYPoint;  /// 告诉编译器XYPoint是一个class

// 下面是函数的定义
-(void) setNameIndex:(int)n;
...

@end

7.类的实现

@implementation class_name

@synthesize a, b; // 配合@property使用

-(void) setNameIndex:(int)n
{
    a = n;
}

...
@end

类名中有一个比较有意思的术语:抽象类(abstract)或者抽象超类(abstract superclasses),在该类中定义了方法和实例变量,但是不希望你直接从该类创建实例

8. 动态绑定和id类型

id datetype;
datetype = class_1_val;
datetype = class_2_val;

id类型可以动态的绑定不同的类类型的变量来更改他指向的内容。我尝试了一下,貌似自带的那些int,double类型不能转换成id类型,用id类型绑定数据后,使用的方法需要在运行时进行检查。

9. 异常处理

// 格式
@try{
    ...
}
@catch(NSException *exception){
    ...
}

10. 子类对父类方法的调用

return_type val = [super func_name];

11. 作用域指令

@protected
@private
@public
@package ---> 这个作用域不是很清楚,书上的解释是对于64位映像,可以实现该类的映像中的任何地方访问这个实例变量Object-c特有的作用域

12. 静态变量,枚举变量,typedef的使用和C++一致

13. 分类

所谓分类其实就是把一个类里面的东西拆分成多个类

/// 原本的类
@interface Fraction : NSObject
@property width, height;

-(void)setW:(int)w setH:(int)h;
@end

/// 分类后的连个类
@interface Fraction : NSObject
@property width, height;

@end

@interface Fraction(OperatorClass)  // 这里创建了一个新的类OperatorClass
-(void)setW:(int)w setH:(int)h;
@end

/// 这两个类的功能和之前的那个类功能完全相同,但是根据需要分成了一个定义实例变量类和具体操作方法类

14 协议

协议是多个类共享的一个方法列表。协议中列出的方法是没有实现的,需要其他人来实现

协议定义格式:

@protocol protocol_name
-(void) paint;
@optional // 之后的协议是否实现可以自由选择
-(void) outline;
@required  // 之后的协议必须实现
-(void) shadow;
@end
posted @ 2015-11-13 16:28  zyh_think  阅读(165)  评论(0编辑  收藏  举报