난 단지 기능을 사용하여 신속의 옵저버 패턴을 구현하기 위해 노력하고있어 :스위프트, 폐쇄와 옵저버 패턴
var closures: [() -> Void] = []
class A: NSObject
{
static var c = 0
var i = 0
override init()
{
super.init()
self.i = A.c
A.c += 1
}
func foo()
{
print("Hi: \(i)")
print("\(A.c)")
}
} // class
var aa:A? = A()
closures.append(aa!.foo)
for item in closures
{
item()
}
aa = A()
for item in closures
{
item()
}
이 인쇄 :
Hi: 0
1
Hi: 0
2
첫 번째 질문, 그것은 인스턴스 변수처럼 보인다 i
이 수정되지 않은 이유는 무엇입니까?
두 번째 질문은 메모리가 누출됩니까? 배열 기능을 가지고 있기 때문에 배열을 비우지 않고 aa
을 출시 할 예정입니까?
세 번째 질문, 그냥 함수를 사용하여 Observe 패턴에 대한 더 좋은 아이디어? (프로토콜을 사용하고 싶지 않습니다.)
나는 '왜'는 '무엇을'추측 : 여기
은 자세한 내용과이 솔루션을 exaplain 기사입니다.형식을 사용하지 않고 Observer 패턴을 구현하려고합니다. 클래스의 A와 같은 객체는 배열에 함수를 추가합니다. 필요한 경우 배열의 각 함수가 호출됩니다. 프로토콜을 사용하여 동일한 작업을 수행 할 수 있지만 다른 것을 시도하려고했습니다. – AR89