Objective-C 笔记

声明一个类需要两个文件, 接口(.h)和实现(.m).

接口(interface)更像是”声明”, 协议(protocol)才是起到”接口”的作用.


类方法用加号(+), 实例方法用减号(-).

1
2
+ alloc;
- init;

引用类型带星号(*).

1
(NSString *) name

方法名包括参数名.

1
2
3
4
// 方法名: setWidth:andHeight:   参数: width, height
- (void)setWidth:(float)width andHeight:(float)height;
// 调用写法
[receiver setWidth:1.0 andHeight:2.0];

super是关键字; self是变量名, 可以被覆盖.


“类采纳了某协议”, 翻译过来就是:”类实现了某接口”. “协议采纳另个协议”, 翻译过来就是:”接口继承”.

1
2
3
4
5
6
7
8
9
// Formatter采纳了Formatting和Prettifying两个协议 
@interface Formatter : NSObject < Formatting, Prettifying >
@end

// 协议采纳协议
@protocol Paging < Formatting >

// 使用协议类型表示实例变量
id <Formatting> anObject;

属性声明的格式.

1
2
3
4
@property(这里是一些特性, 例如readonly/retain/copy) 类型 名称;

// IBOutlet的意思是把属性暴露给Interface Builder设计器
@property (nonatomic, retain) IBOutlet NSButton *myButton;

如何在XCode中使用Interface Builder设计器里的对象.

在设计器里选中对象, 切换到Connections标签, 从Referencing Outlets里扯一条线连接到Controller上, 然后选择实例变量名.


数据源委托到控制器.

对于需要集合数据类型作为数据源的界面元素, 会把dataSource连接到控制器上, 然后由控制器采纳数据源协议并实现方法. 这与以往所见的大不相同, 如果有两个数据源该怎么办?


关于#pragma. 是用于XCode识别代码的标记, 被编译器忽略.

方法分类:

1
#pragma mark 采纳UIPickerDataSource协议

白空格:

1
#pragma mark -

压制未使用变量警告:

1
#pragma unused(unusedVar)