TipBadgeObj should be released from tipBadgeObjDic when its badge superview is released as it will be unsafe to access the object after that happens. Observers won't be called when a weak property is released, otherwise this may have been a solution.