Objective-C 基础
Hello, World!
1 | #import <Foundation/Foundation.h> |
Command Line Compile and Run
1 | clang -fobjc-arc hello.m -o hello && ./hello |
Instance and Method
Objective-C
采用特定的语法对类和实例应用方法: [ClassOrInstance method]
以及将特定的值作为方法参数 [ClassOrInstance argc: value]
Objective-C Class
一个程序在逻辑上分为3个部分:
@interface
部分@implementation
部分program
部分
其中,@interface
部分用于描述类和类的方法; @implementation
部分用于描述数据(类对象的实例变量存储的数据),并实现在接口中声明方法的实际代码;program
部分的程序代码实现了程序的预期目的
@interface 部分
按照约定,类名以大写字母开头,但这不是必须的
1 | @interface NewClassName: ParentClassName |
实例方法以负号(-)开头,实例方法能够对类的实例执行一些操作,如设置值;
类方法以正号(+)开头,类方法是对类本身执行某些操作的方法,如创建类的新实例
@implementation 部分
1 | @implementation NewClassName |
NewClassName
表示的名称与 @interface
部分的名称相同
@implementation
部分中的 methodDefinitions
部分包含在 @interface
部分指定的每个方法的代码中,每种方法的定义通过方法的类型(或者实例)、它的返回值和参数进行标识,并将方法的代码放入一对花括号中
program 部分
program
部分包含解决特定问题的代码,可以跨越多个文件,但必须存在仅有一个的 main
函数
新建一个类的实例:instance = [[ClassName alloc] init]
调用实例的方法:[instance method: value]
Data Type
Objective-C
的基本类型有:char
、int
、float
、 double
Objective-C
的限定词有:long
、long long
、short
、unsigned
和 signed
id
类型:id
数据类型可存储任何类型的对象
Loop Structure
for 语句
1 | for (init_experssion; loop_condition; loop_expression) { |
while 语句
1 | while (expression) { |
do 语句
1 | do { |
break
和 continue
Choice Structure
if 语句
1 | if (expression1) { |
switch 语句
1 | switch (expression) { |
conditional 运算符
条件运算符也叫三目运算符
1 | condition ? expression1 : expression2 |
存取方法
在接口部分使用 @property
指令标识属性,在实现部分使用 @synthesize
指令标识属性,这样编译器就会自动生成存取方法,无需自己编写 getter
和 setter
方法了;当然,你也可以不在实现部分使用 @synthesize
指令,那么编译器会生成以下划线(_)开头的实例变量名
Root Class
1 | @interface ClassName: NSObject |
NSObject
是任何类的根类
使用 @try 处理异常
1 | @try { |
override init method
1 | - (instancetype) init |
instancetype
是关键字
Category
将类的定义模块化到相关方法的分类中
1 | @interface ClassName(CategoryName) |
Class’s Extension
类的扩展是一个未命名的分类
1 | @interface ClassName () |
Protocol
使用 @protocol
指令定义一个协议
定义:
1 | @protocol ProtocolName |
使用:
1 | @interface InterfaceName: ParentClassName <ProtocolName, otherProtocolName> |
对于没有实现的协议方法,使用 @optional
指令修饰,该指令之后列出的所有方法都是可选的
Conditional Compile
1 | #ifdef condition |
Cocoa
术语 Cocoa
总的来说指的是 Foundation
框架、Application Kit
框架和名为 Core Data
的第三方框架
Cocoa Touch
术语 Cocoa Touch
是指 Foundation
、Core Data
和 UIKit
框架
Reference
[1] Kochan S G . Objective-C程序设计[M]. 电子工业出版社, 2012.