objective-c(类别)

objective-c中的Categary(类别)使用相当广泛,其内涵类似于javascript中的prototype,可以扩展某一个类的方法。

下面给出一个基本的例子,参考oc程序设计一书:

  • 实现一个categary
#import <Foundation/Foundation.h>

@interface NSString(Util) //在NSString的基础上实现Util类别

-(BOOL)isUrl;

@end

#import "NSString+Util.h"

@implementation NSString(Util)

-(BOOL)isu
{
    if([self hasPrefix:@"http"]){
        return TRUE;
    }else{
        return FALSE;
    }
}

@end
  • 测试代码
#import <Foundation/Foundation.h>
#import "NSString+Util.h" //包含头文件则开始使用此类别

int main(int argc, const char * argv[]) {
    @autoreleasepool {
        NSString *test1 = @"http://lcacds";
        NSString *test2 = @"fdsfs";

        if([test1 isUrl]){ //判断是否是一个URL链接
            NSLog(@"%@ is url", test1);
        }else{
            NSLog(@"%@ not url", test1);
        }

        if([test2 isUrl]){
            NSLog(@"%@ is url", test2);
        }else{
            NSLog(@"%@ not url", test2);
        }
    }
    return 0;
}
时间: 2024-10-08 15:41:43

objective-c(类别)的相关文章

Objective C 代码片段(类别)

1 @interface NSString (reverse) 2 3 -(NSString *) reverseString; 4 5 @end 1 @implementation NSString (reverse) 2 3 -(NSString *) reverseString { 4 int length = [self length]; 5 NSMutableString *reversedString; 6 7 reversedString = [[NSMutableString a

iOS开发核心语言Objective C —— 全部知识点总结

本分享是面向有意向从事iOS开发的伙伴及苹果产品的发烧友,亦或是已经从事了iOS的开发人员,想进一步提升者.假设您对iOS开发有极高的兴趣,能够与我一起探讨iOS开发.一起学习,共同进步.假设您是零基础.建议您先翻阅我之前分享的iOS开发分分钟搞定C语言系列,然后在開始Objective C语言的学习,假设您遇到问题也能够与我探讨.另外将无偿分享自己整理出来的大概400G iOS学习视频及学习资料,都是干货哦.能够新浪微博私信?关注极客James,期待与您的共同学习和探讨! ! 由于时间有限,每

刨根问底Objective-C Runtime

http://chun.tips/blog/2014/11/05/bao-gen-wen-di-objective%5Bnil%5Dc-runtime-(2)%5Bnil%5D-object-and-class-and-meta-class/ 刨根问底Objective-C Runtime(1)- Self & Super 刨根问底Objective-C Runtime(2)- Object & Class & Meta Class 刨根问底Objective-C Runtime(

objective-c学习篇(一)

objective-c创建对象的两种方法: 1.[类名 new]:直接new一个新对象: 2.[[类名 alloc] init]:先为对象分配内存空间,再为其初始化: 在Cocoa中,对象分配和初始化是两个分离的操作:来自NSObject的类方法alloce为对象分配一块内存并将其清0:实例方法init用于获得一个对象并使其运行. 特性(property): 特性的预编译指令为@property,作用是自动声明属性的setter和getter方法,因此就不必再有为每个属性都写的访问器方法而产生的

类别、延展、继承

Objective-C中继承和类别的比较:category&Inherit 分享类型:应用开发相关 在Objective-C中,给一个类扩展一个其它方法,有两种实现方式:类别和继承.1.继承Inherit这个是面向对象语言都有的一个特性,子类会继承父类的方法和属性.对于以下情况,无法使用类别,必须使用继承.1)新扩展的方法与原方法同名,但是还需要使用父类的实现.因为使用类别,会覆盖原类的实现,无法访问到原来的方法.2)扩展类的属性,这个类别无法做到.示例代码: ? 1 2 3 4 5 6 7 8

iOS开发——项目实战总结&amp;带你看看Objective-C的精髓

带你看看Objective-C的精髓 1:接口与实现 @interface...@end @implementation...@end @class 接口(头文件) 实现文件 向前引用 注:类别通过增加新的类和实例方法来扩展现有类的行为.作为惯例,类别被定义在它们自己的.{h,m}文件里, 2:实例变量可视性 @public @package @protected @private @public:实例变量可使用符号 person->age = 32" 被直接读取. @package:实例

刨根问底Objective-C Runtime(2)- Object &amp; Class &amp; Meta Class

Chun Tips 专注iOS开发 刨根问底Objective-C Runtime(2)- Object & Class & Meta Class 上一篇笔记讲述了objc runtime中Self 和 Super的细节,本篇笔记主要是讲述objc runtime中关于Object & Class & Meta Class的细节. 习题内容 下面代码的运行结果是? @interface Sark : NSObject @end @implementation Sark @e

刨根问底Objective-C Runtime(1)- Self &amp; Super

刨根问底Objective-C Runtime(1)- Self & Super - Chun Tips Chun Tips 专注iOS开发 刨根问底Objective-C Runtime(1)- Self & Super 前言 关于Objective-C Runtime一篇好的文档 : Understanding the Objective-C Runtime 译文地址为: http://blog.cocoabit.com/blog/2014/10/06/yi-li-jieobjecti

objective C中继承、协议、分类和多态的实现

第一.objective C中继承的实现 在oc中只有实例变量会有权限控制,实例方法和类方法是没有权限控制的,这点与c++不同,OC默认的是protected,并且在声明权限控制时,没有分号 在OC中可以像C++一样用指针运算法来访问实例变量 Rectangle.h 文件代码: #import <Foundation/Foundation.h> @interface Rectangle : NSObject { int _width; int _height; } @property (non

OC中SEL,类别,继承,协议的使用

1.SEL SEL是selector的缩写,selector在OC中作用是定义一个方法变量,通过该方法变量来调用方法.我们在后面的UI中会经常用selector来调用事件方法.下面我将举两个例子来说明SEL的使用. 直接通过方法名来调用,我们先新建一个Student类,并在其中定义一个名叫Test的对象方法.并定义一个输出语句: -(void)test { NSLog(@"这是SEL的测试方法"); } 我们在Main方法中通过SEL调用就会输出以上结果,如下: SEL s = @se