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()添加了时间戳、日期戳和自动附加换行符('\n‘)等特性。
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
Objective-C基础教程 笔记的更多相关文章
- jQuery官方基础教程笔记(转载)
本文转载于阮一峰的博文,内容基础,结构清晰,是jquery入门不可多得的资料,非常好,赞一个. 阮一峰:jQuery官方基础教程笔记 jQuery是目前使用最广泛的javascript函数库. 据统计 ...
- python基础教程笔记—即时标记(详解)
最近一直在学习python,语法部分差不多看完了,想写一写python基础教程后面的第一个项目.因为我在网上看到的别人的博客讲解都并不是特别详细,仅仅是贴一下代码,书上内容照搬一下,对于当时刚学习py ...
- php基础教程笔记
php的环境搭建很简单,从网上下载wamp service 2.5,官方网址http://www.wampserver.com/,有32位和64位的,必须下载跟系统一致的版本,不然会出现奇怪的错误,这 ...
- 阮一峰:jQuery官方基础教程笔记
jQuery是目前使用最广泛的javascript函数库. 据统计,全世界排名前100万的网站,有46%使用jQuery,远远超过其他库.微软公司甚至把jQuery作为他们的官方库. 对于网页开发者来 ...
- python基础教程笔记—画幅好画(详解)
今天写一下基础教程里面的第二个项目,主要使用python来做一个pdf的图,比较简单. 首先我们需要安装用到的模块pip install reportlab即可. 书上是用urlopen从往上下了一个 ...
- swift基础教程笔记
http://www.imooc.com/learn/127 <玩儿转swift> 慕课网教程笔记,自己根据2.1的语法做了更新. I. 1.通过playground来学习.熟悉swift ...
- Cytoscape基础教程笔记
昨天开始学用Cytoscape,其tutorial分为两个部分,基础的和高级 的.基础教程又分成了四课:Getting Started.Filters & Editor.Fetching Ex ...
- Java基础教程笔记
第一部分——java基础程序设计 一:java语言特色 1:语言有点:“一次编写,到处运行” 2:相对于C++A:提供了对内存的自动管理:B:去除了C++语言中的“指针”:C:避免了赋值语句(如a=3 ...
- php基础教程笔记2
如果学过c.java,php的语法不学即会,但是不同的是php是一种脚本语言,需要解释器才能运行.php又和js不同,js是客户端语言,而php运行在服务器端,它无法获取客户端浏览器信息.但是php又 ...
随机推荐
- Color Schema 配色随笔
附pdf文件: ColorSchema.pdf
- mac & ip
mac 解决本地网络机器的通信 ip 解决不同网络间主机的通信
- GO函数
函数定义 Go语言中定义函数使用func关键字. func 函数名(参数)(返回值){ 函数体 } 函数名:由字母.数字.下划线组成.但函数名的第一个字母不能是数字.在同一个包内,函数名也称不能重名( ...
- Rsync使用方法
Rsync是一款开源.快速.多功能.可实现全量及增量的本地或者远程数据同步的优秀工具.并且支持多系统平台运行.Rsync具有本地与远程两台主机之间的数据快速复制同步镜像.远程备份等功能,该功能类似sc ...
- django进阶开发(一)--session
基于cookie做用户验证时:敏感信息不适合放在cookie中 session依赖cookie session原理 cookie是保存在用户浏览器端的键值对 session是保存在服务器端的键值对 s ...
- [Offer收割] 编程练习赛1
A HihoCoder 1268 九宫 思路: 一般类似于数独的题目都是使用回溯解决,这里由于题目数据较小同样可以直接DFS得出结果.这里我用了一个偷懒的方法(next_permutation),直接 ...
- VUE引入字体图标库
1. 下载阿里图标 2. 解压文件,并复制文件到VUE项目内 3. 找到添加的字体图标的.css文件,将.iconfont改成[class^="iconfont"], [class ...
- C# 开发AliYun(阿里云) 小蜜调用接口代码
using System; using System.Collections.Generic; using Aliyun.Acs.Core; using Aliyun.Acs.Core.Excepti ...
- Configuring VNC Server on Linux
linux安装oracle时,需用图形化界面安装.所以可采取下列的工具辅助安装 sysvinit (Original Method) systemd (New Method) VNC Clients ...
- vue 添加旋转图片 修改css transform 值
//点击放大图片并旋转图片 conponents组建 <template> <!-- 过渡动画 --> <transition name="fade ...