Description
如何学习 Objective-C 语言,这方面最好的书有什么?
- 在XCode上使用Objective-C写个
Hello World
- Cocoa Dev Central: Learn Objective-C
- TutorialsPoint: Objective-C Tutorial
- Apple Dev: Programming with Objective-C
概念
- iOS和OS X操作系统
- Preprocessor command 什么是Preprocessor ?
- 宏(macro)
- Block
- 指针
- 协议(Protocol)
- 代理(Delegate)
- ARC, pre-ARC
代码组织:
- 工程
- 项目
- 文件
- Group
- Targets Xcode -Target , PROJECT 区别 - Xcode
基本语法
关键字
作用域
指令
操作符
类型
类型为啥都是NS
开头?
nil
-
We can also use this(
nil
) to improve our dealloc method slightly
为什么会提升?
对比两种写法,采用nil
(方式2)少一些代码,可以更快的coding。
// 方式1
- (void) dealloc
{
[caption release];
[photographer release];
[super dealloc];
}
// 方式2
- (void) dealloc
{
self.caption = nil;
self.photographer = nil;
[super dealloc];
}
-
This approach is often better for dealloc because there's no chance of the variable pointing at random data where an object used to be.
随机指向一个对象曾经的数据?
Categaies ?
内存管理
函数
Every Objective-C program has one C function, which is
main()
除了main
函数,不可以定义全局函数,只能作为方法?
多个形参中非首个形参必须添加标签(JoiningArgument)
函数两种调用方式:
- call by value: copy value
- call by reference: copy address
块
有点类似全局函数,用法上又如同JS里的闭包。
- 可以在全局,也可以在其他函数、方法和Block内部定义Block(即嵌套Block)。
- 可以作为变量的值。
数组
- fixed-size
- sequential: contiguous memory locations
- same type
指针
A pointer is a variable whose value is the address of another variable
是变量,所以它用法通其他变量,也有类型和值,不过值是其他变量的内存地址。
指针变量的内存地址大小是一样的。8btye ?
声明方式:
- 一般声明方式
type *var-name
- 其他特殊场景方式:
- 数组变量
没有指定初始值的指针变量的值是个随机的地址?
It is always a good practice to assign a NULL value to a pointer variable in case you do not have exact address to be assigned.
指针算术运算
指针变量的值是内存地址,本质是个64位数字。虽然指针的值是个固定大小(8Byte)的数字,但是这个地址的对应的变量值是有大小的。
结构
预处理器
宏(macro) ?
什么是宏
ANSI standard
代码规范
大驼峰方式命名文件。