Objective-c - Purpose of categories and protocols

后端 未结 5 1054
余生分开走
余生分开走 2020-12-15 01:50

I\'ve been reading up on Objective-c Protocols and Categories and both seem rather pointless to me. They\'re both used for adding things to the program in some funny way ins

5条回答
  •  有刺的猬
    2020-12-15 02:26

    Categories are to add methods to classes whose source is unavailable to you, such as all the Apple classes (those starting with NS, CG, CA, etc.), without needing to subclass them.

    The purpose of protocols is to define methods that classes adhering to that protocol have to implement. In Java, those are called interfaces. The purpose is to codify similarities between classes that are not siblings (subclasses of the same superclass). Suppose you have a class Chair and a class Petrol. These don't have a lot in common, except that they both adhere to the flammable protocol, which requires them to have certain methods, such as specificEnergy and flamingPoint.

    Now your Fire class can have a method addFlammableMaterial:(id )material.

    Protocols are often used to declare that instances of certain classes can be delegates for certain other instances. You can declare your view controller to act as the data source to a UITableView by declaring it to conform to the UITableViewDataSource protocol, which means your viewController guarantees that it implements the required methods of that protocol, and the tableView can rest safely because it can trust the VC to be its data source.

提交回复
热议问题