OC 核心语法

来源:互联网 发布:linux 报文发送工具 编辑:程序博客网 时间:2024/05/01 19:23

点语法

1.    点语法的本质还是方法调用

p.age = 10;相当于[p setAge:10];

[p age];  相当于  p.age;

怎么验证 get/set 方法的本质?在 get/set 方法中添加打印验证.

    成员变量的作用域

1⃣ 基本概念

局部变量,全局变量都有自己的作用域,成员变量也不例外

2⃣ 类型

@private : 只能在当前类的实现@ implementation 中直接访问

@protected : 可以在当前类以及子类的实现@ implementation 中直接访问

@public : 任何地方都可以直接访问

@package : 同一个”体系内”(框架)可以访问,介于@ private 和@ public 之间

2.    继承补充

1⃣ 专业术语

父类\超类  superclass

子类  subclass\subclasses

2⃣ 单继承

3.    @implementation 补充

没有@ interface, 只有@implementation, 也可以开发一个类

分类(Category)

1.    分类的作用:在不改变类内容的基础上,可以为类增加一些方法

2.    类目的文件名的格式:”需要添加类目的类名 + 类目的名称”, (例如:想要给 NSString 类添加一个类目 Extension, 那么文件名就是NSString+Extension.h  + NSString+Extension.m)

3.    类目的定义格式:

@interface 需要添加的类目的类名(类目名),类目的声明在. h 文件中声明,类目的实现在.m文件实现.

4.    使用注意:

1⃣ 分类只能增加方法,不能增加成员变量

2⃣ 分类方法实现中可以访问原来类中的成员变量

3⃣ 分类可以重新实现原来类中的方法,但是会覆盖掉原来的方法,会导致原来的方法没法在使用

4⃣ 方法调用的优先级:现在分类中查找对应的方法,如果没有找到,再到父类中查找,分类(最后编译的分类优先)à原来类à父类

5⃣ 一个类中可以定义多个分类,而且类目的作用可以沿袭到子类,就是父类的类目中的方法子类依然可以使用 super 关键字进行调用的.

5.     给系统类添加分类

1⃣ 创建类方法,计算出字符串中的阿拉伯数字的个数

int count = 0;

+ (int)numberCountOfString:(NSString*)str{

for(int i = 0; i< str.length;i ++){

  unichar c = [str characterAtIndex:i];

if( c >= ‘0’&& c<=’9’){

count++;

     }

    }

 return count;

}

2⃣  创建对象方法,计算出字符串中的阿拉伯数字的个数

        int count = 0;

        - (int)numberCount{

   for(int i = 0; i < str.length;i ++){

      unichar c = [str characterAtIndex:i];

       if( c >= ‘0’ && c<=’9’){

       count++;

     }

}

return count;

}

6.    description方法(类方法和实例方法)

   1⃣ 使用场合

   默认情况下,利用 NSLog 和%@输出对象的时候,结果是:<类名:内存地址>

首先,在使用 NSLog 和%@输出对象的时候,会调用对象的-description 方法;拿到- description 方法的返回值(NSString *)显示在屏幕上;-description 方法默认返回的是”类名+内存地址”.决定实例对象的结果

   2⃣ 类方法(+description)

  当输出类对象的时候,会调用类的 description 方法,拿到+ description 方法,将结果打印在屏幕上.

7.    NSLog 打印分析(从日志输出里面进行查看)

NSLog 输出 C语言字符串的时候, 不允许有中文的

Printf(“%s\n”,_FILE_);输出文件的路径

NSLog(@”%s\n”,_func_); 输出当前函数名

NSLog(@”%d”,_LINE_);   输出行号

8.    Sel 数据类型

_cmd 代表着当前方法

SEL 其实是对方法的一种包装,将方法包装成一个 SEL类型的数据,去找对应方法的地址,找到方法地址就可以调用方法.

9.协议的概念和用法


1⃣ 上面就是定义了一个 WithProtocl 的协议

协议的定义格式:

@protocol  协议名 <父协议>

定义方法

@end

:定义协议的关键字是@ protocol,同时协议也是可以继承父协议的

 

协议中定义的方法还有两个修饰符:

@required : 表示这个方法是其他类必须实现的,也是默认的值

@optional :  表示这个方法对于其他类实现是可选的

 

这里要注意的是,上面代码中的<NSObject>不是我们之前所说的类,,而是协议<NSObject>协议,它也是 OC中第一个协议.

2下面是协议的使用:

Student.h

使用协议很简单,直接在继承类<NSObject>后面添加协议名<协议名>即可

然后在.m 文件中实现协议中的方法

使用方法(respondsToSelector:@selector),这个方法的作用是判断当前对象中是否定义了一个方法.



0 0
原创粉丝点击