zoukankan      html  css  js  c++  java
  • 关情纸尾-----OC-面对对象的核心语法

    有点愧疚,这几个月荒废了,也浪费了很多时间。

    接下来是我看的关于核心语法的一些笔记,可能不全也可能有错误,希望大家可以指出来。

    一、点语法

    点语法的本质是调用。

    例如:

    Person *p = [Person new];

    //赋值

    p.age = 10; // 等价于[P setAge:10];调用setter

    //取值

    int a = p.age;// 等价于[P age];调用getter

    二、成员变量的作用域

    @public  任何地方都能直接访问

    @private 只能在当前类的对象方法中直接访问

    @protect 当前类和子类的对象方法。虽然被保护,但是在内存中子类拥有父类中的方法

    三、@property和@synthesiz

      1.自动生成 _age.

      2.自动生成_age的setter和getter声明

    @property int age;//写上类型和名称

    /*等价于

    -(void)setAge:(int)age;

    -(int)age;*/

    //表示字符串

    @property NSString*name;

       生成setter 和getter方法的实现

    @synthesize age = _age;

    还可以连着写

    @synthesize age =_age,name = _name;

    注:

    一般情况下省略@synthesize,只写@property

    并且会自动生成setter和getter的声明和实现。

    四、万能指针 id

    id 是一种指针,一般形式为

    id = NSObject*

    id d = [Person new]

    五、构造方法

    属于对象方法,减号开头。

    new  完整的创建一个可用的对象

    ① 分配存储空间 ② 初始化

    不再使用new创建对象。改为以下方式

    1.调用+alloc 分配存储空间

    2.调用-init进行初始化

    Person *p = [[Person alloc] init];

    六、重写构造方法

    目的:为了让对象创建出来,成员变量就会有一些固定的值

    *****重写-init 方法*****

    -(id)init    //id是为了使任何对象都可以调用NSObject

    {

    //一定要调用回super 的init 方法,初始化父类中声明的成员变量和其他属性

    if (self = [super init]

    //如果对象初始化成功,才能进行下面的初始化

    {_age = 10;//所有成员变量初始化值都是10

    }

    return self;//返回一个已经初始化完毕的对象

    }

    七、自定义构造方法

    自定义构造方法:

    1.一定是对象方法,一定以减号开头

    2.返回值一定是id类型

    3.方法名以initWith开头

    例如

    @interface Person:NSObject

    @property NSString *name;

    @property int *age;

    -(id) initWithName:(NSString*)name andAge:(int)age;

    @implementation Person

    -(id)initWithName:(NSString*)name andAge:(int)age;

    {if(self=[super init])

    {_name=name;

    _age=age;

    }

    return self;

    }

    int main()

    {Person *p = [[Person alloc] initWithName:@"rose"andAge:30]

    return 0;

    }

    八、类的本质

    //利用Person这个类创建Person类型的对象

    Person *p = [[Person alloc] init];

    //获取内存中的类对象,即Person这个类对象

    Class c = [p class];

    也可以写成Class c = [Person class];

    注:

    类本身也是一个对象,是个class类型的对象,简称类对象,

    利用class创建Person类对象

    利用person创建Person类型的对象

  • 相关阅读:
    C#调用Delphi的dll 详解
    C# 用API截取桌面屏幕
    C# 控件代码设置置顶和置底属性
    C#用API 获取电脑桌面背景图地址
    利用JS使IE浏览器默认打开是全屏显示
    aspx页面生成xml数据
    MacOS下安装Anaconda+Pycharm+TensorFlow+Keras
    GitHub编辑README
    Win10(64位)下安装Anaconda+Tensorflow(GPU)
    Win7(64位)下安装Anaconda+Tensorflow(CPU)
  • 原文地址:https://www.cnblogs.com/Lorraine1/p/4417216.html
Copyright © 2011-2022 走看看