学习笔记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

 

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

学习笔记2-C语言的运算符和程序结构

一  运算符 1 运算符及分类   运算符是特定的算术或者逻辑符号。   1)按功能分类 算术运算符、关系运算符、逻辑运算符和按位运算符。 2)按操作数的个数分类 单目运算符、双目运算...

学习笔记4-C语言数组和字符串

数组的基本概念及分类       数组:把具有相同类型的若干变量安装有序的形式组织起来。这些按序排列的同类型数据的集合称为数组。        数组元素:构成数组的数据。每个数组元素有相...

C语言中Union类型的使用方法

使用C语言时,常常使用struct,对于union类型却几乎没有用过,只知道它是联合类型,各字段共享一块内存,实际应用中却不知道它的具体用途。 今天读《编程卓越之道》中看到有对其使用的简单介绍,记录...
  • feimor
  • feimor
  • 2011-10-10 10:32
  • 6739

学习笔记3-C语言函数进制

函数的概述   C语言程序是由函数组成的。函数是C程序的基本模块,通过函数模块的调用实现特定的功能。 函数的优点:提高程序的可读性,提高开发效率和提高代码的重用性。   1函数分类 ...

(C语言)共用体union的用法举例

以前在学校学习C语言的时候一直搞不懂那个共用体union有什么用的。工作之后才发现它的一些妙用,现举例如下:1. 为了方便看懂代码。比如说想写一个3 * 3的矩阵,可以这样写:[注:下面用红色部分标记...

自适应滤波

对于一些事先并不知道所需要进行操作的参数的应用,例如一些噪声信号的特性,要求使用自适应的系数进行处理。在这种情况下,通常使用自适应滤波器,自适应滤波器使用期望和反馈来综合调整滤波器系数以及频率响应。常...

联合体(union)的使用方法及其本质

6.本质&进阶: 根据union固定首地址和union按最大需求开辟一段内存空间两个特征,可以发现,所有表面的定义都是虚的,所谓联合体union,就是在内存给你划了一个足够用的空间,至于你怎么玩~它...

学习笔记10-OC类的特性

1     NSString 类 处理字符串的类。 1) 创建常量字符串 NSString  *str =@”abc“;  //str 为指针变量  ”abc“为字符串常量    &...

学习笔记8-C语言文件

文件        文件:存储在外部介质上的数据集合。集合的名称叫文件名。 作用:文件可以保存程序运行结果。   编码分类:ascii文件(文本文件)和二进制文件。 文件操作原理: 1) 文件缓冲区:...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

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