Difference between categories,subclasses and notifications,delegations

objective-c

Solution

Categories vs. Subclasses

Categories let you expand the API of existing classes without changing their type. Subclassing also expands the API but introduces a new type. Additionally, subclassing lets you add state.

Notifications vs. Delegation

Notifications are a way to let unrelated classes communicate. Delegation on the other hand lets related classes communicate using a more explicitly defined interface.

Problem

I am confusing from these areas.I searched on net.But every site giving different solutions.And i am new for this technology.So please provide corrects differences and definitions for this list.

Original source