学习笔记9-OC入门基础

原创 2015年11月21日 14:50:30

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

 

Android入门基础 Java基础学习笔记dya9 多态,抽象类和接口

1.多态 A.多态概述:事物存在的多种形态 B.多态前提: a.要有继承关系 b.要有方法重写 c.要有父类引用指向子类对象。Animal a = new Cat();a.eat();//...

Android入门基础 Java基础学习笔记dya9 多态,抽象类和接口

1.多态 A.多态概述:事物存在的多种形态 B.多态前提: a.要有继承关系 b.要有方法重写 c.要有父类引用指向子类对象。Animal a =  new Cat();a.eat();//...

OC学习笔记(9)Object-C多态的使用

1、基类ASShape //.h #import @interface ASShape : NSObject -(void) draw; @end //.m #import "ASShape.h"...

OC学习笔记合集

  • 2015年10月21日 21:39
  • 124KB
  • 下载

Swift基础学习笔记一(对比OC)

Swift基础学习笔记一(对比OC)简介: 2014.6月苹果发布Swift1.0,同时也发布了Xcode6.0 2015.6月发布Swift2.0测试版,Xcode7.0 2015.12月开源 新建...

ios学习笔记 oc基础5

面向对象-石头剪刀布小游戏电脑和人都是参赛者的子类 比赛和参赛者的复合 main// // main.m // oc_8.7_3 // // Created by dq on 15/8/7....

iOS学习笔记基础-oc06内存管理

一、  内存管理基本原理: 1、    栈存放局部变量,系统自动回收。堆存放动态产生的存储变量,需要手动回收。 2、    任何继承了NSObject的对象都需要进行内存管理。 3、    每个...

【黑马程序员-学习笔记】OC-基础知识总结

Objective-C是基于标准的ANSI C的一门面向对象语言。其语法和设计主要基于Smalltalk,所以有些类似,而且支持标准的C语言语法。代码文件的类型有三种:[.h]头文件,[.m]C代...

黑马程序员---学习笔记21:OC基础(8)

——Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ——- @property是编译器指令,告诉编译器声明属性的访问器(getter和setter)方法; ...

iOS开发学习笔记① - OC基础

OC基础 遍历数组 for循环: for (int i = 0; i
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:学习笔记9-OC入门基础
举报原因:
原因补充:

(最多只允许输入30个字)