zoukankan      html  css  js  c++  java
  • OC2

    1.局部变量和全局变量以及成员变量的区别

    写在类声明的大括号中的变量, 我们称之为 成员变量(属性, 实例变量)

    成员变量只能通过对象来访问

    注意: 成员变量不能离开类, 离开类之后就不是成员变量,成员变量不能在定义的同时进行初始化

    存储: 堆(当前对象对应的堆的存储空间中)

    存储在堆中的数据, 不会被自动释放, 只能程序员手动释放

    写在函数和大括号外部的变量, 我们称之为全局变量

    作用域: 从定义的那一行开始, 一直到文件末尾

    局部变量可以先定义在初始化, 也可以定义的同时初始化

    存储: 静态区

    程序一启动就会分配存储空间, 直到程序结束才会释放

    写在函数或者代码块中的变量, 我们称之为局部变量

    作用域: 从定义的那一行开始, 一直到遇到大括号或者return

    局部变量可以先定义再初始化, 也可以定义的同时初始化

    存储 : 栈

    存储在栈中的数据有一个特点, 系统会自动给我们释放

    2.函数和方法的区别

     1.函数属于整个文件, 方法属于某一个类

     方法如果离开类就不行

     2.函数可以直接调用, 方法必须用对象或者类来调用

     注意: 虽然函数属于整个文件, 但是如果把函数写在类的声明中会不识别

     3.不能把函数当做方法来调用, 也不能把方法当做函数来调用

     方法的注意点:

     >方法可以没有声明只有实现

     >方法可以只有声明没有实现, 编译不会报错, 但是运行会报错

     如果方法只有声明没有实现, 那么运行时会报: 

     reason: '+[Person demo]: unrecognized selector sent to class 0x100001140'

     发送了一个不能识别的消息, 在Person类中没有+开头的demo方法

     reason: '-[Person test]: unrecognized selector sent to instance 0x100400000'

     类也有一个注意点:

     类可以只有实现没有声明

     注意: 在开发中不建议这样写

    3.常见错误:

    1.只有类的声明,没有类的实现

    2.漏了@end

    3. @interface和@implementation嵌套

    4.成员变量没有写在括号里面

    5.方法的声明写在了大括号里面

    6.成员变量不能在{}中进行初始化、不能被直接拿出去访问

    7.方法不能当做函数一样调用

    8.OC方法只能声明在@interface和@end之间,只能实现在@implementation和@end之间。也就是说OC方法不能独立于类存在

    9.C函数不属于类,跟类没有联系,C函数只归定义函数的文件所有

    10.C函数不能访问OC对象的成员

    11.低级错误:方法有声明,但是实现的时候写成了函数

    12.OC可以没有@interface同样可以定义一个类

    4.字符串基本使用

    NSString使用

    只需要在C语言字符串前面加上@符号, 系统就会自动将C语言字符串转换为OC字符串

    C语言中的字符串不是对象;OC中的字符串是一个对象

    注意: 输出C语言的字符串使用%s

              输出OC的字符串使用%@,  %@就专门用于输出对象类型的

    方法不能使用函数来实现, 方法是方法, 函数是函数

    方法属于一个类, 函数属于一个文件

    5.结构体作为对象的属性

    初始化结构体属性

    方法一:强制转换

    stu->_birthday = (Date){1986, 1, 15};

        

    方法二:定义一个新的结构体,给d赋值,将d赋值给_birthday

        Date d = {1986, 1, 15};

        stu->_birthday = d;

    方法三:分别赋值

    stu->_birthday.year = 1986;

    stu->_birthday.month = 1;

    stu->_birthday.day = 15;

    6.对象作为方法的参数传递

    7.对象作为方法的参数连续传递

    8.#pragma mark 基本使用

    //#pragma mark  程序入口

    9.对象作为返回值类型

    注意:在企业级开发中千万不要随意修改一个方法

    通过new创建出来的对象存储在堆中,堆中的数据不会自动释放

  • 相关阅读:
    【Java123】HTTP Post Form Data 传输的Java实现
    【数据库123】Oracle数据库数据实时监控
    【Java123】Java基础知识点
    【测试123】ISTQB AL
    【Git123】Git 常用命令
    [Java123] Spring
    【Java123】JavaWeb Servlet开发
    [Java123] JBoss
    [SQL123] Oracle SQL 统计一定时间间隔内的数据
    【测试123】性能测试之压力测试
  • 原文地址:https://www.cnblogs.com/micalafei/p/4774615.html
Copyright © 2011-2022 走看看