• ObjectiveC学习笔记


    1、#import是GCC编译器提供的,Xcode在编译Objective-C、C和C++程序时都会使用它,#import可保证头文件只被包含一次,而不论此命令实际上在那个文件中出现了多少次。

      在C语言中,程序员通常使用基于#ifdef命令的方案来避免一个文件包含另一个文件,而后者又包含第一个文件的情况。而在Objective-C中,程序员使用#import实现这个功能。

    2、NSLog()与printf()相比添加了一些特性,例如时间戳、日期戳和自动附加换行符(‘\n’)等。

    3、Objective-C中的BOOL实际上是一种对带符号的字符类型(signed char)的定义(typedef),它使用8位存储空间。YES定义为1,而NO定义为0(使用#define)。

       Objecitve-C并不将BOOL作为仅能保存YES或NO值得真正的布尔类型来处理。编译器将BOOL认作8位二进制数,YES和NO值只是一种约定。

    4、过程式程序建立在函数之上,数据为函数服务。面向对象编程从相反的角度来看待问题,它以程序的数据位中心,函数为数据服务。在OOP中,数据通过间接方式包含对自身操作的引用代码。

    5、Objective-C不支持多继承。但是可以通过分类和协议来获取多继承的优点。

    6、继承在子类和超类之间建立了一种“is a”(是一个)的关系;复合建立的则是“has a”(有一个)的关系。

    7、在跨文件依赖关系中,头文件或源文件需要使用另一个头文件中的信息。文件之间相互重复的导入会增加编译次数,也会导致不必要的重复编译。而巧妙地使用@class指令能够减少编译时间,@class告诉编译器“相信我,你最终能够了解这个名称的类”,它可以减少不得不导入的头文件数量。

    8、@synthesize是一种新的编译器功能,表示“创建该属性的访问器”。当遇到代码@synthesize rainHandling时,编译器将输出-setRainHandling:和-rainHandling方法的已编译的代码。

    9、类别有两方面的局限性。第一,无法向类中添加新的实例变量。类别没有位置容纳实例变量。第二,名称冲突,即类别中的方法与现有的方法重名。当发生名称冲突时,类别具有更高的优先级。

    10、Cocoa中的类别主要用于3个目的:将类的实现分散到多个不同文件或多个不同框架中,创建对私有方法的前向引用,以及向对象添加非正式协议。

    11、KVC介绍:键/值编码中的基本调用包括-valueForKey:和-setValue:forKey:。以字符串的形式向对象发送消息,这个字符串是我们关注的属性的关键。KVC需要解析字符串来计算答案,因此速度比较慢。

  • 相关阅读:
    IIS HTTP 错误 405.0
    读书笔记 (.NET企业级应用架构设计)
    .net core 2.2 使用imagemagick 将pdf转化为png
    mac visual stdio 2019 自动格式化代码的选项
    黑马程序员——OC语言基本语法知识foundation
    黑马程序员——OC语言基本语法知识(五)
    黑马程序员——OC语言基本语法知识(四)
    黑马程序员——OC语言基本语法知识(三)
    黑马程序员——OC语言基本语法知识(二)
    黑马程序员——OC语言基本语法知识(一)
  • 原文地址:https://www.cnblogs.com/wenxp2006/p/2599872.html
Copyright © 2020-2023  润新知