ObjectiveC分类

摘要:
通过分类,您可以向现有类添加新方法,即使没有源代码,这有点像C#中的扩展方法。此时,提供了一个将字符串转换为驼峰类型并删除单词空间的示例。NSString+CamelCase。h#import //NSString表示要添加的类的名称。类必须已经存在//CamelCase是为类添加的分类的名称//只能添加方法,不能添加变量//头文件命名约定:ClassName+CategoryName.h@interfaceNSString-camelCaseString ;@ EndNSString+CamelCase。m#import“NSString+CamelCase.h”@implementationNSStringcamelCaseString{//调用NSString的内部方法以获得驼峰字符串。

通过分类的方式可以为已存在的类添加新的方法,甚至不需要源码,有点像C#中的扩展方法。

这时提供一个例子是把一个字符串转换为驼峰式并且出掉单词空格。

NSString+CamelCase.h

#import <Foundation/Foundation.h>

//NSString 表示将要添加分类的类名称,该类必须是已存在的。
//CamelCase 是为类添加的分类的名称。
//只能添加方法,不能添加变量。
//头文件命名惯例:ClassName+CategoryName.h
@interface NSString (CamelCase)

-(NSString*) camelCaseString;

@end

NSString+CamelCase.m

#import "NSString+CamelCase.h"

@implementation NSString (CamelCase)

-(NSString*) camelCaseString
{
    //调用NSString的内部方法获取驼峰字符串。
    //self指向被添加分类的类。
    NSString *castr = [self capitalizedString];
    
    //创建数组来过滤掉空格, 通过分隔符对字符进行组合。
    NSArray *array = [castr componentsSeparatedByCharactersInSet:
                      [NSCharacterSet whitespaceCharacterSet]];
    
    //把数组的字符输出
    NSString *output = @"";
    for(NSString *word in array)
    {
        output = [output stringByAppendingString:word];
    }
    
    return output;
    
}

@end

main.m

#import <Foundation/Foundation.h>
#import "NSString+CamelCase.h"

int main (int argc, const char * argv[])
{

    NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];

    NSString *str = @"My name is bill.";
    NSLog(@"%@", str);
    str = [str camelCaseString];
    NSLog(@"%@", str);

    [pool drain];
    return 0;
}

免责声明:文章转载自《ObjectiveC分类》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇POJ2151Check the difficulty of problems显示时间格式下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

ObjectiveC 文件操作二

10,文件委托,以便操作文件。头部看起来像是这样。 @interface MyFileManager : NSObject @property(strong)NSFileManager *fileManager; @end .m文件 #import "MyFileManager.h" @implementation MyFileManager @synthe...

Objective-C中的@dynamic与@synthesize的区别

Objective-C中的@dynamic 转自:http://blog.csdn.net/haishu_zheng/article/details/12873151 一、@dynamic与@synthesize的区别 @property有两个对应的词,一个是@synthesize,一个是@dynamic。如果@synthesize和@dynamic...

OC-整理

1.1不可变字符串NSString // 使用实例方法创建NSString对象 NSString *string1 = [[NSString alloc] initWithFormat:@"姓名41564564"]; NSLog(@"%@", string1); NSString *string2 =...

iOS学习笔记38-MJExtension使用

一、MJExtension第三方框架 我们在iOS开发过程中,我们常常需要将字典数据(也就是JSON数据)与Model模型之间的转化,例如网络请求返回的微博数据、等等,如果我们自己全部手动去创建模型并赋值,都是一些毫无技术含量的代码,费时费力,而且还可能会赋值出错,让我们很头疼。 MJExtension框架就是为了解决这个问题而设计得第三方开源库。这个开源库...

归档与解归档

5、对象的归档 概念:对象归档是指将对象写入文件保存在硬盘上,当再次又一次打开程序时,能够还原这些对象。亦能够称作对象序列号,对象持久化 5.1数据持久化的方式 NSKeyedArchiver---对象归档 NSUserDefaults 属性列表化(NSArray。NSDictionary保存文件) SQLite数据库,CoreData 5...

iOS 使用UIView的一种有效方法

在一个典型的MVC结构 中,Model部分负责保存目标数据,View部分主要负责实现数据的界面以及将数据显示出来,二者在Controller的操作下协同工作。在iOS应用中,View的实现主要由UIView及其派生类实现,主要由UILabel、UIImageView等等类来显示不同的信息。 这里展示一个demo来说明个人对UIView同数据交互的一种观点,个...