一、概述
为什么我把本篇文章命名为《iOS Delegate用法》而不是《iOS Delegate详解》呢?因为Delegate并没有什么好说的,因为Delegate是基于Protocol实现的。所以这里只讲用法。
二、Delegate用法
第一步:
在使用协议的AClass类中定义一个协议,常以”类名+Delegate “命名,比如AClassDelegate,在协议中定义需要使用的方法,比如定义的方法为:
|
@
protocol
AClassDelegate
<
NSObject
>
@
optional
-
(
void
)
year
:
(
NSString *
)
year
month
:
(
NSString *
)
month
day
:
(
NSString *
)
day
;
@
end
|
第二步:
在类中声明属性:
|
@
property
(
nonatomic
,
weak
)
id
<
AClassDelegate
>
delegate
;
|
第三步:
在AClass中定义一个事件(方法),在事件的实现中书写事件代码,并通知代理(即调用BClass那里实现的这个代理方法):
|
if
(
[
self
.
delegate
respondsToSelector
:
@
selector
(
year
:
month
:
day
:
)
]
)
{
[
self
.
delegate
year
:
@”
2015”
month
:
@”
8”
day
:
@”
1”
]
;
}
|
第四步:
其他类BClass中遵守AClassDelegate协议,并使用self. delegate = self;将这个其他设置为AClass的代理。并实现代理方法,当第三步中的事件发生时候会自动调用BClass里实现的代理方法,可以通过代理方法获得第三步传过来的数据:
|
-
(
void
)
year
:
(
NSString *
)
year
month
:
(
NSString *
)
month
day
:
(
NSString *
)
day
{
NSLog
(
[
NSString
stringWithFormat
:
@
"%@年%@月%@日"
,
year
,
month
,
day
]
;
)
}
|