Objective-C学习笔记类目、协议

      不是所有的方法都可以被覆盖的!比如:intValue就不能被覆盖!!

      原因正在查找中!

      别人的电脑上却可以!

类目.h件

 

1 #import <Foundation/Foundation.h>
2 
3 @interface NSString (Email)
4 
5 - (BOOL)stringEmail;
6 
7 @end

 

类目.m文件

 1 #import "NSString+Email.h"
 2 
 3 @implementation NSString (Email)//类目
 4 
 5 - (BOOL)stringEmail
 6 {
 7     NSRange isSame = [self rangeOfString:@"@"];
 8     if(isSame.location)
 9     {
10         return YES;
11     }
12     else return NO;
13 }
14 
15 @end

协议(只有.h文件):

 1 这里就定义了一个协议WithProtocl
 2 协议的定义格式:
 3 @protocol  协议名  <父协议>
 4 定义方法
 5 @end
 6 注:定义协议的关键字是@protocol,同时协议也是可以继承父协议的
 7 
 8 协议中定义的方法还有两个修饰符:
 9 @required:这个表示这个方法是其他类必须实现的,也是默认的值
10 @optional:这个表示这个方法对于其他类实现是可选的
11 这个就和类似与Java中的抽象类了,如果是abstract修饰的就必须实现,所以如果一个协议中没有@optional修饰的方法,那么这个协议就相当于Java中的接口了。
12 
13 这里要注意的是,上面的代码中NSObject不是我们之前说的NSObject类了,而是NSObject协议,他也是OC中第一个协议,这个名字相同在OC中是没有关系的。
实现

@interface 子类名 : 父类名 <协议名>  

@end


 

posted @ 2015-10-29 15:52  刘冠  阅读(179)  评论(0编辑  收藏  举报