学习笔记9-OC入门基础

1     import 引入头文件 可以防止重复包含 include 需要预处理指令。

2     NSLog    参数的是NSString 类型对象

printf  参数是字符串指针。

 

NSLog  可以自动换行  输入的内容有日期和项目名称

NSString 是OC的特有用来定义字符串C中不支持

NSLog  可以格式化输出  %@ 打印字符串  但不支持C%s

                C中不能使用%@打印字符串。

3     @符号的使用

@“xx” 表示xx是OC中的一个字符串。

@标识符  表示OC中的关键字

4     OC中的注释和C的相同

5     OC可以向下兼容C可以使用C中的函数调用方法和C 相同。

6     OC和C差异

1) 源文件对比 

C中有.c .o .out .h

OC中 .h .m

 

2)基本数据类型

      OC添加了一个 bool类型和block类型。

        指针数据类型class(类)  id

       特殊类型   SEL  nil(空对象)

3) 增强了for 快速变量数组和字典等集合。

4) 方法定义

5) Boolean 作用 判断逻辑值 0 假  非0真

存储的值 true 1   false 0

BOOL 类似Boolean  YES 1   NO 0

6) 添加异常捕捉机制。

7     面向对象

面向过程: 强调的是功能行为

                             关注的解决问题需要哪些步骤

面向对象:将功能封装进对象,强调具备了功能的对象

                            关注解决问题需要哪些对象

                            面向对象是基于面向过程的。

特性:封装 继承 多态

       类:是具有相似内部状态和运动规律实体的集合。(名词提炼法)

               类的构成:类型  属性 和方法(行为或对属性中的数据进行操作的方法)

        对象:对类的相同特征属性和运动规律的提取。图纸

8     类的声明(.h)和实现(.m)

方法:相当于C中的函数。

              +动态方法

-      静态方法  类似java中static定义的方法

声明(@interface):声明类的属性和方法

@interface 类名:父类 {

        成员变量      //成员变量声明

}

方法声明

@end    //以@end 结束该类的声明

 

@interface Person:NSObeject {

        @public;

NSString  *name;      //成员变量声明

       int age;

}

                    

@end    //以@end 结束该类的声明

 

方法的实现(@implementation)实现声明中定义的方法

        @implementation  类名

               声明方法的实现

@end

9     对象的创建

  OC中对象创建时都是创建的对象指针

 类名 *对象名=[类名 new];

       Person  *person =[ Person new];

       new 的作用:向计算机申请内存空间  给成员变量赋初值 返回申请空间的首地址。

10 成员变量的访问 

person->name=@“xiaoming”; //成员变量赋值

person->age=15;

点语法

person.name=@“xiaoming”; //成员变量赋值

person.age=15;

 

NSLog(@”name:%@ \t age:%d”, person->name, person->age);//成员变量的使用。

10  方法的定义、实现和调用

方法前 + 表示动态方法 – 表示静态方法

声明在@interface内   实现在@implementation内

1) 无参无返回值对象方法的声明

-(void) 方法名;

无参无返回值对象方法的实现

-(void) 方法名{

           代码块

}

方法调用 [对象 方法名];

 

2)   有参无返回值对象方法的声明

参数之间可以加一些修饰词。

-(void) 方法名 : (参数类型) 参数名 :(参数类型)参数名 ;

有参无返回值对象方法的实现

-(void) 方法名 : (参数类型) 参数名1 :(参数类型)参数名2  {

           

}           注意  每个参数之前有冒号分隔  冒号算方法名的一部分

有参无返回值对象方法的实现

方法调用 [对象 方法名:实参1:实参2];


//
//  main.m
//  1 类的声明、实现和调用
//
//
 
#import<Foundation/Foundation.h>
 
@interfacePerson :NSObject
{
    NSString *_name;
    int _age;
}
 
//无参无返回值对象方法的声明
-(void)run;
// 有参无返回值对象方法声明
-(void)run:(NSString *)name andSpeed :(int)speed ;
@end
 
@implementationPerson
//无参无返回值对象方法的实现
-(void)run{
   
    NSLog(@"person is running");
};
// 有参无返回值对象方法实现
-(void)run:(NSString *)name andSpeed :(int)speed {
    NSLog(@" %@ is running by %dkmph",name ,speed);
 
   
}
 
@end
 
intmain(int argc, const char * argv[]) {
    @autoreleasepool {
      
        Person *p= [Person new];
        //无参无返回值对象方法的调用
        [p run];
        // 有参无返回值对象方法调用
        [p run:@"xiaoming"andSpeed:100];
    }
    return 0;
}


 

11  对象的存储细节

创建对象  Person *p =[Person new];

代码区:存放了类的成员变量及对象方法

堆区:new生成的对象后,堆区中存放了类的成员变量及其初值。

          还有一个 _isa指针存放代码区的类的首地址。

               并将该实例对象的首地址返回。

栈区:Person *p 之后,栈区存放了指针变量p  并接收new返回的实例对象地址。

调用函数时 先找堆区的实例对象_isa 指针 通过_isa指针找代码区的代码。

12    #pragma mark 组名

#pragma mark – 组之间加一条横线.

13  函数和对象方法对比

对象方法

1)对象方法的声明只能写在 @interface @end之间,对象方法的实现只能写在@implementation @end之间。

2)对象方法都以 – 开头 类方法以+开头

3)对象方法只能由对象来调用,类方法只能由类调用

4) 对象方法归类或者对象所有。

 

函数

1) 函数属于整个文件,可以写在文件任何位置。

2) 函数不存在隶属关系

3) 可以直接调用

4) 不可以访问对象中的成员变量。

14  常见错误

1) 声明和实现不能嵌套

2) 声明和实现必须同步

3) 成员变量必须写在{}内

4) 成员变量声明时不能赋值。

5) 成员变量不能使用static

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值