如何在Xcode 6或更高版本中创建类别?


318

我想UIColor使用Xcode 6在我的应用程序上创建一个类别。但问题是,在Xcode 6中没有Objective-C类别文件模板。

是否可以在Xcode 6中创建类别?


在Xcode 6之前,您是如何做到的?
Holex 2014年

只需在源文件中键入:@interface UIColor(MyCategory) ... etc
JeremyP 2014年

8
为什么不选择答案?不这样做会浪费其他用户寻找解决方案的时间。
Tommie C. 2014年

如果您使用的是Swift,那么您将创建扩展而不是类别。请参阅此答案以了解操作方法。
Suragch

Answers:


745

他们没有忘记。他们只是移动了它而没有告诉任何人。

  1. 点击File-> New->File

  2. 在或下分别选择Objective-C file,然后单击下一步。SourcesiOSMac OS

  3. 现在下File Type:选择使用CategoryProtocolExtension

PS。在File Name:任何你在这里键入将是本CategoryProtocolExtension名称。


13
这真令人困惑。
Ben Sinclair 2014年

6
他们只是为了增加Swift而将所有内容隐藏在Objective-C下,或者我认为是的。我个人不知道为什么要添加Swift,Objective-C是一门如此美丽和富有表现力的语言,一旦您了解它...它是C语言之上的对象... Perrrfect
unom 2014年

8
嘿,Objective-C FileXCode 6 给出的描述是“一个空的Objective-C文件。”而不是我的描述,它是“您曾经使用过的旧的但完全不是空的Objective-C文件之一” ,这让我相当满意!
Benjohn 2014年

@unmircea感谢您发布此类有用的信息。对苹果:这很愚蠢!
mbm29414 2014年

1
他们没有忘记。他们只是移动了它而没有告诉任何人。通常情况下,考虑到Apple文档的总体水平很低,最常见的是完全缺乏文档。
鸭子

77

要创建CategoryBaseClass + CategoryName.m / .h

  1. 文件→新建→文件...或使用⌘N
  2. 选择Objective-C文件

在此处输入图片说明

  1. 键入类别名称,选择“ 文件类型:类别”,然后选择基类。

在此处输入图片说明

  1. 完成流程以创建类别。


19

Xcode6-Beta5更新

现在,界面已更改,可以直接从“新建”>“文件”窗口中添加类别。

请参阅unmircea的答案


我自己感到很惊讶,我想因为Swift而他们忘记了旧的Objective-C。

您有两种选择:

  1. 用类别名称example创建一个Objective-C类UIView+Powerups,然后手动更改接口以匹配类别之一。请注意,类别接口和实现的代码段仍在工作,因此非常容易:输入@interface-category@implementation-category

  2. 从Xcode 5导入!使用以下命令:

    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/

    关闭并重新打开Xcode 6,您将在向导中找到新文件的“ Objective-C类别”。


2
仅供参考:如果您使用的是更高版本的Beta,只需将行中的Xcode-beta.app更改为Xcode6-betaX.app,其中X是Beta编号。
乌克兰亚历克斯

1
错误!检查出的答案unmircea下面正确的答案-这不是走了,它刚搬到..
周杰伦

12

Xcode 6 beta中暂时没有预定义的模板来创建类别,它们可能稍后会添加此选项。作为一种变通办法,您可以创建一个Cocoa Touch Class(我不知道但没有其他方法的)名为UIImage+Additions(ClassName + CategoryName)的名称,并覆盖其接口和实现,例如

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

编辑
在找到在Xcode 6 beta中创建类别的方法之前,写了此答案。检查unmircea的答案以了解创建类别的正确方法


苹果忘了补充的Objective-C类,Objective-C类扩展,Objective-C的协议模板....
Yalamandarao

如果您想复制它,我创建了一个错误报告#17627118。
David Pettigrew 2014年

由于最终版本的XCode 6内置了类别支持,因此现在无需解决方法。
Zorayr

@Zorayr在最终的Xcode 6版本之前得到了答复,解决方法也没有错。不要简单地投反对票。
Anil Varghese 2015年

6

unmircea的奇妙答案扩展到:如何创建自定义类别以实现自定义UIColor调色板,您可以创建一个类别。

一旦你创建你的类别(在这个例子中,它是一个ColorPalette UIColor),你就会有一个标题和一个实现文件。

UIColor + ColorPalette.h

#import <UIKit/UIKit.h>

@interface UIColor (ColorPalette)

// Your custom colors

+ (UIColor *) customRedButtonColor;
+ (UIColor *) customGreenButtonColor;

@end

UIColor + ColorPalette.m

#import "UIColor+ColorPalette.h"

@implementation UIColor (ColorPalette)

// Button Colors

+ (UIColor *) customRedButtonColor {
    return [UIColor colorWithRed:178.0/255.0 green:25.0/255.0 blue:0.0/255.0 alpha:1.0];
}

+ (UIColor *) customGreenButtonColor {
    return [UIColor colorWithRed:20.0/255.0 green:158.0/255.0 blue:96.0/255.0 alpha:1.0];
}

要使用自定义调色板,只需将标题导入要实现自定义颜色的类中:

#import "UIColor+ColorPalette.h"

并调用颜色你将一个标准色样redColorgreenColorblueColor

这是对创建自定义调色板的更深入讨论链接

此外,这是一个工具,可帮助您选择自定义颜色值


1
尽管从理论上讲这可以回答问题,但最好在此处包括答案的基本部分,并提供链接以供参考。
2015年


1

您可以创建“扩展”文件,例如NSString + Helper:

1: File  New  File... or use N.

2: Name NSString+Helper (For example)

3: create the file

4: Remove the code from file

5: add 

extension NSString {


}

做完了 享受编码

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.