How do I create a category in Xcode 6 or higher?

84,000

Solution 1

They didn't forget. They just moved it without telling anyone.

  1. Click File -> New -> File

  2. Select Objective-C file under Sources in iOS or Mac OS respectively and Click Next

  3. Now under File Type: choose either Category, Protocol, or Extension

PS. Under File Name: whatever you type here will be either the Category, Protocol, or Extension Name.

Solution 2

To create CategoryBaseClass+CategoryName.m/.h:

  1. File → New → File... or use ⌘N.
  2. Select Objective-C File.

enter image description here

  1. Type in category name, select File Type: Category, and then select the base class.

enter image description here

  1. Complete the flow to create the category.

Solution 3

Here's a visual demonstration:

creating a category file

Solution 4

Xcode6-Beta5 update

The interface has now changed and it's possible to add a Category directly from the New > File window.

See unmircea's answer.


I was surprised myself, and I guess because of Swift they forgot about good old Objective-C.

You have two options:

  1. Create an Objective-C class with the category name, example UIView+Powerups, then manually change the interface to match the one of category. Note that the snippet for the category interface and implementation is still working, so that's extra easy: type @interface-category and @implementation-category.

  2. Import it from Xcode 5! Use this command:

    cp -r /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/Library/Xcode/Templates/File\ Templates/Cocoa\ Touch/Objective-C\ category.xctemplate /Applications/Xcode6-Beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/Library/Xcode/Templates/File\ Templates/Source/
    

    Close and reopen Xcode 6 and you'll find "Objective-C Category" in the wizard for the new file.

Solution 5

There is no predefined template to create category in Xcode 6 beta(for time being),they may add this option later. As a work around you can create a Cocoa Touch Class(its not proper i know but no other way) named UIImage+Additions(ClassName+CategoryName) and override its interface and implementation some thing like

UIImage+Additions.h

#import <UIKit/UIKit.h>

@interface UIImage(Additions)

+(void)testMethod;

@end 

UIImage+Additions.m

#import "UIImage+Additions.h"

@implementation UIImage (Additions)

+(void)testMethod
{

}

@end

Edit
This answer was written before finding a way of creating category in the Xcode 6 beta. Check unmircea's answer for the right way of creating category

Share:
84,000
Yalamandarao
Author by

Yalamandarao

IOS &amp; Xamarin Forms Application Developer. FB Page : https://www.facebook.com/IPhoneSdkForums/?ref=bookmarks

Updated on July 08, 2022

Comments

  • Yalamandarao
    Yalamandarao almost 2 years

    I want to create a category on UIColor in my app using Xcode 6. But the thing is that in Xcode 6 there is no Objective-C category file template.

    Is there any option to create a category in Xcode 6?

  • Yalamandarao
    Yalamandarao almost 10 years
    Apple forgot to add Objective-c Category, Objective-c class extension, Objective-c Protocols templates....
  • David Pettigrew
    David Pettigrew almost 10 years
    I created a bug report #17627118 if you want to duplicate it.
  • Alex the Ukrainian
    Alex the Ukrainian almost 10 years
    FYI: if you're on a later beta, just change Xcode-beta.app in the line to Xcode6-betaX.app where X is the beta number.
  • Jay
    Jay almost 10 years
    Wrong! Check out the answer by unmircea below for the correct answer - it's not gone, it has just moved..
  • pronebird
    pronebird over 9 years
    This is so confusing.
  • unom
    unom over 9 years
    They just accommodated to adding Swift and hidden everything under Objective-C or I think that they did. I personally don't get why Swift was added, Objective-C is such a beautiful and expressive language once you get to know it... It's Objects on top of C... Perrrfect
  • Benjohn
    Benjohn over 9 years
    Heh, the description given for Objective-C File by XCode 6 is "An Empty Objective-C file.", rather than my description which would be, "one of the old, not at all empty, Objective-C files that you're used to", which threw me off fairly nicely!
  • mbm29414
    mbm29414 over 9 years
    @unmircea Thanks for posting such useful information. To Apple: This is stupid!
  • Duck
    Duck over 9 years
    They didn't forget. They just moved it without telling anyone. what is typical, considering the crappy level of Apple documentations in general and most frequently the total lack of documentation.
  • unom
    unom over 9 years
    What are you missing on the Documentation level? It's true they always change things but the documentation is very good, although written in a style that is a little different from what other software companies.
  • SefTarbell
    SefTarbell over 9 years
    Thanks! I was stumped on this and could not find where they moved it.
  • Zorayr
    Zorayr over 9 years
    Although this might be a working solution, it's probably a better idea to use the category support built into Xcode - this way, the templates will always be up to date.
  • Zorayr
    Zorayr over 9 years
    No need for the workaround now since final version of XCode 6 has category support built-in.
  • Anil Varghese
    Anil Varghese over 9 years
    @Zorayr It was answered before the final Xcode 6 version and the work around is not wrong also. Don't simply down vote.
  • Matthieu Riegler
    Matthieu Riegler over 9 years
    Stack Exchange should change theirs algorithms to bring these kind of answers to the top !!
  • alexzg
    alexzg over 9 years
    This should be the preferred answer
  • Jasper
    Jasper almost 9 years
    Whilst this may theoretically answer the question, it would be preferable to include the essential parts of the answer here, and provide the link for reference.
  • Iulian Onofrei
    Iulian Onofrei over 8 years
    @unmircea, I don't remember now, but I did stumble upon public methods not documented too.