zoukankan      html  css  js  c++  java
  • Objective-C基础教程 笔记

    一、对C的扩展

    1. #import VS #include

    C语言使用#include语句通知编译器应在头文件中查询定义。

    OC中也可以使用#include,但几乎不这么用,而是使用#import。

    #import <Foundation/Foundation.h>

    (查看Foundation框架中的Foundation.h头文件)

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

    2. 框架

    框架是一种聚集在一个单元的部件集合,包含头文件、库、图像、声音文件等。

    苹果公司将Cocoa、Carbon、QuickTime和OpenGL等技术作为框架集提供。

    Cocoa的组成部分有Foundation和Application Kit(AppKit)框架。

    还有一个支持框架的套件,包含Core Animation和Core Image。

    Foundation框架处理用户界面之下的层(layer)中的特性,例如数据结构和通信机制。

    Foundation框架包含一百多个头文件,可在/System/Library/Frameworks/Foundation.framework/Headers/文件夹查看。

    Xcode使用预编译头文件,一种经过压缩的、摘要形式的头文件,在通过#import导入这种文件时,加载速度非常快。

    3. NSLog()

    NSLog()相对于printf()添加了时间戳、日期戳和自动附加换行符(' ‘)等特性。

    Cocoa对其所有函数、常量和类型名称都添加了“NS”前缀,说明来自Cocoa而不是其他工具包。(NS来自于苹果公司收购的NeXT公司)

    4. @字符串

    @“xxxx”双引号字符串前有一个@符号,表示为NSString类型的字符串。

    有许多特性,例如:知道长度,与其他字符串比较,转换为整型值或浮点值,还有许多功能是使用C风格字符串无法实现的。

    如果在NSLog()中传入C风格字符串,编译器会给出warning:passing arg 1 of `NSLog` from incompatible pointer type。

    5. 布尔类型

    C语言:bool,值为true或false。

    OC:BOOL,值为YES或NO。编写Cocoa代码时要使用BOOL。

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

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

    如果不小心将一个长于1字节的整数值(如short或int)赋给一个BOOL变量,那么只有低位字节会用作BOOL值。如果地位字节刚好是0(例如8960,十六进制为0x2300),BOOL值将会是0,即NO。

    不要直接将BOOL值与YES比较。OC中1不等于YES,但NO就是0。

    NSLog(@"Are %d and %d different? %@", 5, 5, boolString(areTheyDifferent)); //其中%@表示接收NSString指针。

    二、面向对象编程OOP

  • 相关阅读:
    Java实现 LeetCode 455 分发饼干
    Java实现 LeetCode 455 分发饼干
    Java实现 LeetCode 455 分发饼干
    Java实现 LeetCode 454 四数相加 II
    Java实现 LeetCode 454 四数相加 II
    Java实现 LeetCode 454 四数相加 II
    FFmpeg解码H264及swscale缩放详解
    linux中cat more less head tail 命令区别
    C语言字符串操作总结大全(超详细)
    如何使用eclipse进行嵌入式Linux的开发
  • 原文地址:https://www.cnblogs.com/argenbarbie/p/10449912.html
Copyright © 2011-2022 走看看