【问题标题】:How do I create a category in Xcode 6 or higher?如何在 Xcode 6 或更高版本中创建类别?
【发布时间】:2014-08-11 00:28:35
【问题描述】:

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

有没有在 Xcode 6 中创建类别的选项?

【问题讨论】:

  • 在 Xcode 6 之前你是怎么做到的?
  • 只需在源文件中输入:@interface UIColor(MyCategory) ...
  • 为什么不选择一个答案?不这样做会浪费其他用户寻找解决方案的时间。
  • 如果您使用的是 Swift,那么您将创建一个扩展而不是一个类别。请参阅this answer 了解如何操作。

标签: ios objective-c categories xcode6


【解决方案1】:

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

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 的答案以了解创建类别的正确方法

【讨论】:

  • Apple 忘记添加 Objective-c 类别、Objective-c 类扩展、Objective-c 协议模板......
  • 如果你想复制它,我创建了一个错误报告 #17627118。
  • 现在不需要解决方法,因为 XCode 6 的最终版本内置了类别支持。
  • @Zorayr 它在最终的 Xcode 6 版本之前得到了回答,并且解决方法也没有错。不要简单地投反对票。
【解决方案2】:

Xcode6-Beta5 更新

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

unmircea's answer


我自己也很惊讶,我猜是因为 Swift,他们忘记了古老的 Objective-C。

你有两个选择:

  1. 使用类别名称创建一个Objective-C类,例如UIView+Powerups,然后手动更改接口以匹配类别之一。请注意,类别接口和实现的 sn-p 仍在工作,因此非常简单:输入 @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 类别”。

【讨论】:

  • 仅供参考:如果您使用的是更高版本的测试版,只需将行中的 Xcode-beta.app 更改为 Xcode6-betaX.app,其中 X 是测试版编号。
  • 错了!查看下面unmircea的答案以获得正确答案 - 它没有消失,它只是移动了..
【解决方案3】:

你可以从旧版本的 Xcode 中复制你想要的模板,我为此做了一个 shell 脚本:https://github.com/cDigger/AddMissingTemplates

【讨论】:

  • 虽然这可能是一个可行的解决方案,但使用 Xcode 内置的类别支持可能是一个更好的主意 - 这样,模板将始终是最新的。
【解决方案4】:

他们没有忘记。他们只是在没有告诉任何人的情况下移动了它。

  1. 点击File -> New -> File

  2. 分别在iOSMac OS中选择Sources下的Objective-C file并点击下一步

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

附言。在File Name: 下,您在此处输入的内容将是CategoryProtocolExtension 名称。

【讨论】:

  • 这太令人困惑了。
  • 他们只是适应添加 Swift 并将所有内容隐藏在 Objective-C 下,或者我认为他们做到了。我个人不明白为什么要添加 Swift,一旦你了解了 Objective-C,它就是一种如此美丽和富有表现力的语言……它是 C 之上的对象……完美
  • 嘿,XCode 6 对Objective-C File 的描述是“一个空的 Objective-C 文件。”,而不是我的描述,“一个旧的,一点也不空,你习惯的 Objective-C 文件”,这让我非常满意!
  • @unmircea 感谢您发布如此有用的信息。致苹果:这太愚蠢了!
  • 他们没有忘记。他们只是在没有告诉任何人的情况下移动了它。 考虑到一般 Apple 文档的蹩脚水平,最常见的是完全缺乏文档,这是典型的。
【解决方案5】:

创建CategoryBaseClass+CategoryName.m/.h

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

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

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

【讨论】:

    【解决方案6】:

    扩展unmircea's fantastic answer re:如何创建自定义类别来实现自定义UIColor调色板,您可以创建一个类别。

    创建类别后(在本例中,它是一个名为 ColorPaletteclass 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

    Here's a link to a slightly more in-depth discussion 创建自定义调色板。

    另外,这里是a tool to help you select the custom color values

    【讨论】:

    • 虽然理论上可以回答这个问题,it would be preferable 在这里包含答案的基本部分,并提供链接以供参考。
    【解决方案7】:

    这是一个视觉演示:

    【讨论】:

      【解决方案8】:

      你可以创建像 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 {
      
      
      }
      

      完成。享受编码

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-05-31
        • 1970-01-01
        • 1970-01-01
        • 2011-08-08
        • 2014-11-16
        • 2019-01-10
        • 1970-01-01
        相关资源
        最近更新 更多