Objective-C 笔记
Objc声明一个类需要两个文件, 接口(.h)和实现(.m).
接口(interface)更像是”声明”, 协议(protocol)才是起到”接口”的作用.
类方法用加号(+), 实例方法用减号(-).
#!objc
+ alloc;
- init;
引用类型带星号(*).
#!objc
(NSString *) name
方法名包括参数名.
#!objc
// 方法名: setWidth:andHeight: 参数: width, height
- (void)setWidth:(float)width andHeight:(float)height;
// 调用写法
[receiver setWidth:1.0 andHeight:2.0];
super是关键字; self是变量名, 可以被覆盖.
“类采纳了某协议”, 翻译过来就是:”类实现了某接口”. “协议采纳另个协议”, 翻译过来就是:”接口继承”.
#!objc
// Formatter采纳了Formatting和Prettifying两个协议
@interface Formatter : NSObject < Formatting, Prettifying >
@end
// 协议采纳协议
@protocol Paging < Formatting >
// 使用协议类型表示实例变量
id <Formatting> anObject;
属性声明的格式.
#!objc
@property(这里是一些特性, 例如readonly/retain/copy) 类型 名称;
// IBOutlet的意思是把属性暴露给Interface Builder设计器
@property (nonatomic, retain) IBOutlet NSButton *myButton;
如何在XCode中使用Interface Builder设计器里的对象.
在设计器里选中对象, 切换到Connections标签, 从Referencing Outlets里扯一条线连接到Controller上, 然后选择实例变量名.
数据源委托到控制器.
对于需要集合数据类型作为数据源的界面元素, 会把dataSource连接到控制器上, 然后由控制器采纳数据源协议并实现方法. 这与以往所见的大不相同, 如果有两个数据源该怎么办?
关于#pragma. 是用于XCode识别代码的标记, 被编译器忽略.
方法分类:
#!objc
#pragma mark 采纳UIPickerDataSource协议
白空格:
#!objc
#pragma mark -
压制未使用变量警告:
#!objc
#pragma unused(unusedVar)