Cla*_*sen 2 language-design objective-c
以NSTimer为例.构造时,除第一个(方法名称)之外的所有参数都命名为:
NSTimer *timer =
[NSTimer
scheduledTimerWithTimeInterval: seconds
target: self
selector: @selector(timerTick:)
userInfo: nil
repeats: repeats
];
Run Code Online (Sandbox Code Playgroud)
为什么第一个参数没有命名?即
NSTimer *timer =
[NSTimer scheduledTimerWithTimeInterval
interval: seconds
target: self
selector: @selector(timerTick:)
userInfo: nil
repeats: repeats
];
Run Code Online (Sandbox Code Playgroud)
这背后是否有一些语言设计决策?它提供了一些我在这里看不到的灵活性吗?
我认为正确命名的Objective-C方法实际上确实命名了第一个参数.在您给出的示例中,第一个参数的名称为TimeInterval基本方法名称scheduledTimerWith.
请记住,该方法实际上可以定义为:
+ (NSTimer *)scheduledTimer:(NSTimeInterval)seconds
:(id)target
:(SEL)aSelector
:(id)userInfo
:(BOOL)repeats
Run Code Online (Sandbox Code Playgroud)
给该方法一个名称scheduledTimer:::::.
当然,这是蹩脚和不可读的,因此每个参数都有一个名称,我们最终scheduledTimerWithTimeInterval:target:selector:userInfo:repeats:得到第一个参数的命名位置TimeInterval.
| 归档时间: |
|
| 查看次数: |
126 次 |
| 最近记录: |