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

  • 相关阅读:
    关于图片色彩位深度与颜色模式(待完善)
    Android 跨进程数据共享
    Android实现模拟表单上传
    Android数据库无缝升级方案
    Dagger2在Android开发中的应用
    Dagger2学习笔记
    Android开发随手记
    Android Shape Divider
    带你玩转java多线程系列 “道篇” 多线程的优势及利用util.concurrent包测试单核多核下多线程的效率
    带你玩转java多线程系列 二 Thread 和 Runnable
  • 原文地址:https://www.cnblogs.com/argenbarbie/p/10449912.html
Copyright © 2011-2022 走看看