黑马程序员——Objective-C学习笔记<九>:复习Fundation框架

 ——- android培训IOS培训、期待与您交流! ———-

如何定义类

以定义一个Fraction类为例:


//Fraction.h文件 

#import<Foundation/Foundation.h> 

@interface FractionNSObject 

{ 

   intnumerator; 

   intdenominator; 

} 

-(void)print; 

- (void)setNumberator:(int)n; 

- (void)setDenominator:(int)d; 

@end 
//Fraction.m实现文件 

@implementation Fraction 

-(void)print 

{ 

   NSLog(@"%i/%i",numerator,denominator); 

} 

- (void)setNumberator:(int)n 

{ 

   numerator=n; 

} 

- (void)setDenominator:(int)d 

{ 

   denominator=d; 

} 

@end 

如何使用类

初始化对象

Fraction *myFraction=[[Fractionalloc] init] ;

调用对象方法

[myFraction setNumerator :1]

用完记得释放掉对象
[myFraction release];


实例变量作用域的指令:

@protected
实例变量可被该类及任何子类中定义的方法直接访问(默认的情况)。

@private
实例变量可被定义在该类的方法直接访问,不能被子类定义的方法直接访问。

@public
实例变量可被该类中定义的方法直接访问,也可被其他类或模块中定义的方法访问。使得其他方法或函数可以通过(->)来访问实例变量(不推荐用)。

@package
对于64位图像,可以在实现该类的图像的任何地方访问这个实例变量。


表示范围作用的结构体:NSRange

三种创建NSRange的方式

1.

NSRange rangerange.location=17; 
range.length=4; 

2.

NSRange range={17 ,4};

3.

NSRange range=NSMakeRange(17,4); (推荐)


表示字符串的类:NSString

创建格式化字符串

NSString *heigth = [NSString stringWithFormat:@"Youheigthis%dfeet,%dinches",5,11];

返回字符串中的字符的个数:

unsigned int length = [heigth length];

返回Bool值的字符串比较函数:
//比较两个字符串的内容是否相等
- (BOOL) isEqualToString:(NSString*)aString;

还可以使用方法compare :

//逐个字符比较 
-(NSComparisonResult)compare :(NSString*)string;

不区分大小写的比较:

 -NSComparisonResult)compare :(NSString*)string 
                        options :(unsigned)mask; 

注意:
NSComparisonResult是一个枚举值
options是一个位掩码,即:

NSCaseInsensitiveSearch:不区分大小写
NSLiteralSearch: 进行完全比较,区分大小写
NSNumericSearch: 比较字符串的字符个数,而不是字符值

检查字符串是否以另一个字符串开头

-(BOOL)hasPrefix:(NSString*)aString;

判断字符串是否是以另一个字符串结尾

-(BOOL)hasSuffix:(NSString*)aString;

如果想知道字符串内的某处是否包含其他字符串,使用方法 rangeOfString:

-(NSRange)rangeOfString :(NSString*)aString;

NSString是不可变的,NSMutableString是可变的。

创建方法为stringWithCapacity :

NSMutableString *string = [NSMutableStringstringWithCapacity :42];

使用appendString :appendFormat: 来附加新字符串:

- (void) appendString:(NSString*)aString;

- (void) appendFormat:(NSString*)format,...;

可以使用deleteCharactersInRange: 方法删除字符串中的字符

- (void) deleteCharactersInRange: (NSRange)range;


数组

NSArray:用来存储对象的有序列表(任意类型的对象)

限制:
只能存储Objective—C的对象,
不能存储C语言的基本数据类型(int、float、enum、struct、或者NSArray 中的随机指针)。
同时也不能存储nil(对象的零值或NULL值)。

//创建一个新的NSArray 
NSArray *array=[NSArray arrayWithObjects:@"one",@"two",nil]; 

//获得包含的对象个数 
- (unsigned)count; 

//获得特定索引处的对象 
- (id)objectAtIndex :(unsigned int)index ; 

使用componentsSeparatedByString :来切分NSArray,

NSString *string=@"oop:ack:bork:greeble:ponies"; 
NSArray *chunks=[string componentsSeparatedByString:@":"]; 

使用componentsJoinedByString :来合并NSArray中的元素并创建字符串

string=[chunks componentsJoinedByString :@":-)"];

NSArray是不可变数组,数组中包含的对象是可以改变的,但是数组对象本身是不会改变的。

可变数组NSMutableArray通过类方法arrayWithCapacity :来创建可变数组

+ (id)arrayWithCapacity :(unsigned)numItems ; 
NSMutableArray *array = [NSMutableArray arrayWithCapacity:17]; 

使用addObject :在数组末尾添加对象

- (void)addObject :(id)anObject ;

//删除特定索引的对象 
- (void)removeObjectAtIndex :(unsigned)index; 

注:可变数组还可以在特定索引处插入对象,替换对象,为数组排序,NSArray还提供了大量好用的功能。


枚举

NSEnumerator 用来描述这种集合迭代器运算

想使用NSEnumerator,需要通过objectEnumerator向数组请求枚举器:

-(NSEnumerator*)objectEnumerator;

可以像这样使用这个方法:

NSEnumerator *enumerator; 
enumerator = [array objectEnumerator]; 

注:若想从后向前枚举集合,使用方法reverseobjectEnumerator; 也可以使用。

获得枚举器以后,开始while循环,每次循环都向这个枚举器请求它的nextObject

- (id)nextObject;//返回nil表明循环结束

注:在枚举的过程中不能改变数组容器。

快速枚举示例:

for(NSString *string in array){ 
     NSLog(@"I found %@",string); 
} 
数组排序:

例如:一条记录就是一条卡片的信息,包括(NSString*name和NSString*email)

-(void)sort 
{ 
   [book sortUsingSelector:@selector(compareNames:)] ;
} 

其中:

@selector(compareNames:)    
//创建一个SEL类型的selector,sortUsingSelector:使用该方法比较数组中的两个元素, 

sortUsingSelector:方法需要完成这样的比较,它先调用这个指定的selector方法,然后向数组(接受者)的第一条记录发送消息,比较其参数和此记录。指定方法的返回值为NSComparisonResult类型,返回值为:若小于返回NSOrderedAscending;相等返回NSOrderedSame;大于返回NSOrderedDescending

- (NSComparisonResult) compareNames: (id) element 
{ 
    return[namecompare:[elementname]]; 
} 

NSDictionary:(关键字和定义的组合)

NSDictionary通常在给定一个关键字(通常是一个NSString字符串)下存储一个数值(可以是任何类型的对象)。然后你可以使用这个关键字查找相应的数值。

//使用dictionaryWithObjectsAndKeys :来创建字典 
+(id)dictionaryWithObjectsAndKeys :(id)firstObject,... 

例如:

  Tire*t1=[Tire new]; 

  NSDictionary *tires = [NSDictionary   dictionaryWithObjectsAndKeys :t1,@"front-left",nil]; 

使用方法objectForKey :来获取字典中的值

- (id)objectForKey :(id)akey;

查找可以这样:

Tire *tire=[tiresobjectForkey:@"front-left"];

创建新的NSMutableDictionary对象,向类NSMutableDictionary发送dictionary消息。也可以使用方法dictionaryWithCapacity: 来创建新的可变字典

+(id)dictionaryWithCapacity:(unsignedint)numItems ;

可以使用方法setObject :forKey :给字典添加元素

setObject :forKey :(id)aKey

下面是另一种使用发送dictionary消息来创建字典的方法:

NSMutableDictionary*tires;
tires=[NSMutableDictionary dictionary]; 
[tires setObject :t1 forKey :@"front-left"]; 

若对字典中已有的关键字使用方法setObject :forKey :,则用新的替换可以使用方法removeObjectForKey: 来删除可变字典中的一个关键字

- (void)removeObjectForKey:(id)aKey ;

不要去创建NSString、NSArray或NSDictionary的子类,实在要的话可以用复合的方式来解决问题。

使用这种方法枚举词典:

forNSString *keying) 

{ 

    //....

} 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值