 				let h: CGFloat = ceil(v.font.lineHeight)
 				v.frame = CGRectMake(0, bounds.height + lineLayerDistance, bounds.width, h)
 				v.hidden = false
-				UIView.animateWithDuration(0.15, animations: { [unowned self] in
-					v.frame.origin.y = self.frame.height + self.lineLayerDistance + self.detailLabelAnimationDistance
-					v.alpha = 1
+				UIView.animateWithDuration(0.15, animations: { [weak self] in
+                    if nil != self {
+                        v.frame.origin.y = self!.frame.height + self!.lineLayerDistance + self!.detailLabelAnimationDistance
+                        v.alpha = 1
+                    }
 				})
 			}
 		}

			titleLabel.frame = bounds
			titleLabel.font = font
			titleLabel.hidden = false
			UIView.animateWithDuration(0.15, animations: { [unowned self] in
				self.titleLabel.alpha = 1
				self.titleLabel.transform = CGAffineTransformScale(self.titleLabel.transform, 0.75, 0.75)
				self.titleLabel.frame = CGRectMake(0, -(self.titleLabelAnimationDistance + h), self.bounds.width, h)
			})
		}
	}
	
	/// Hides and animates the titleLabel property.
	private func hideTitleLabel() {
		UIView.animateWithDuration(0.15, animations: { [unowned self] in
			self.titleLabel.transform = CGAffineTransformIdentity
			self.titleLabel.frame = self.bounds
		}) { [unowned self] _ in
			self.placeholder = self.placeholderText
			self.titleLabel.hidden = true
		}
	}
	

	/// Hides and animates the detailLabel property.
	private func hideDetailLabel() {
		if let v: UILabel = detailLabel {
			UIView.animateWithDuration(0.15, animations: { [weak self] in
                if nil != self {
                    v.alpha = 0
                    v.frame.origin.y -= self!.detailLabelAnimationDistance
                }
			}) { _ in
				v.hidden = true
			}
