`

objecive-c函数

阅读更多

#import <Foundation/Foundation.h>

int main (int argc, const char * argv[]) {
    NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
	//创建字符串
	NSString *height;
	/**类方法:
	 +(id) stringWithFormat: (NSString *) format,...
	 通过格式字符串和参数来创建NSString
	 省略号(。。。):可以接受多个以逗号分割的参数。
	 这声明方法时添加加号(+),那么这个方法为类方法,不需要创建实例就可以调用,通常用于创建心的实例,我们称用来创建新对象的类方法为工厂方法。
	 -------------------
	 objective-c运行时生成一个类的时候,它会创建一个代表该类的类对象。类对象包含了指向超类的指针,类名,和指向类方法列表的指针。类对象还包含一个long型数据,为新创建的类实例对象指定大小(以字节为单位)
	 
	 类方法可以用来访问全局数据。
	 
	 实例方法要用前导减号(-)来开始声明
	 
	 */
	
	height=[NSString stringWithFormat:@"you heigh is %d feet,%d inches",5,11];
	NSLog(height);
	//length 返回字符串中字符的个数。-(unsigned int) length;
	if([height length]>5){
		NSLog(@"height length ------");
	}
	
	//字符串比较
	/**
	 isEqualToString :可以用来比较接收方和当作参数传递来的字符串的内容是否相同,返回yes和no
	 */
	NSString *thing1=@"hello";
	NSString *thing2=[[NSString alloc] initWithString:@"hello"];
    if([thing1 isEqualToString:thing2]){
		NSLog(@"they are same");	
	}
	/**
	 ==:只判断指针数值,而不是它们所指向的内容
	 */
	if(thing1==thing2){
		NSLog(@"== same");
	}
	
	/*
	 compare:比较两个字符串。区分大小写
	 compare将接收对象和传递来的字符串逐个字符的进行比较,它返回一个NSComparisonResult(枚举类型)来显示结果。
	 typedef enum _NSComparisonResult{
	 NSOrderedAscending=-1;
	 NSOrderedsame;
	 NSOrderedDescending;
	 } NSComparisonResult;
	 */
	[thing1 compare:thing2];
	if(NSOrderedSame==[thing1 compare:thing2]){
		NSLog(@"compare same");	
	}
	
	//compare:options: 
	/***
	 -(NSComparisonResult) compare:(NSString *) string 
	 options:(unsinged) mask;
	 
	 options 是一个位掩码,可以使用|添加选项标记
	 选项:
	 NSCaseInsensitiveSearch:不区分大小写字符
	 NSLiteralSearch:进行完全比较,区分大小写
	 NSNumbericSearch:比较字符串的字符个数,而不是字符值
	 */
	if([thing1 compare:thing2 options:NSCaseInsensitiveSearch|
		 NSNumericSearch]==NSOrderedSame){
		NSLog(@"they match");
	}
	
	/**
	 以某个字符串开始或结尾
	 -(BOOL) hasPrefix:(NSString *) aString;
	 -(BOOL) hasSuffix:(NSString *) aString;
	 */
	NSString *fileName=@"aabbbcc";
	if([fileName hasPrefix:@"aa"]){
		NSLog(@"begin with aa");
	}
	
	if([fileName hasSuffix:@"cc"]){
		NSLog(@"end with cc");
	}
	
	//NSMutableString 可变字符串
	//SString 是不可变的,一旦NSString 被创建了,我们就不能改变它。
	
	//+(id) stringWithCapacity:(unsinged) capacity; capacity:是给NSMutableString的一个建议,字符串的大小并不局限于所提供的大小,这个容量仅是个最优值。
    
	NSMutableString *str=[NSMutableString stringWithCapacity:40];
	[str appendFormat:@"sdfsdf%d",5];
	[str appendString:@"ssssssss"];
	NSLog(str);
	
	//删除字符串
	//-(void) deleteCharactersInRange:(NSRange) range;
	
	NSMutableString *ms;
	ms=[NSMutableString stringWithCapacity:50];
	[ms appendString:@"aabbccdd"];
	NSRange range;
	range=[ms rangeOfString:@"cc"];
	[ms deleteCharactersInRange:range];
	NSLog(ms);
	
	//与实例方法一样,继承对类方法也同样适用
	
	//------------------集合--------------
	//NSArray ,NSDictionary
	/**
	 NSArray 是一个cocoa类,用来存储对象的有序列表。
	NSArray有两个限制:1,它只能存储objective-c的对象,而不能存储c语言中的基本数据类型如int,float,enum,struct,或者nsarray中的随机指针。2,不能这nsarray中存储nil
	 
	 类方法:
	 arrayWithObjects:创建一个新的nsarray。发送一个以逗号分割的对象列表,这列表结尾添加nil代表列表结束,(这就是不能这nsarray中存储nil的原因)
	 
	 */
	NSArray *array=[NSArray arrayWithObjects:@"aa",@"bb",@"cc",nil];
	
	//-(unsigned) count; 取得包含对象的个数
	//-(id) objectAtIndex:(unsigned int) index; 取得索引位置的对象
	
	int i;
	for (i=0; i<[array count]; i++) {
		NSLog(@"index %d has %@",i,[array objectAtIndex:i]);
	}
	
	//------------切分数组
	//-componentsSeparatedByString:
	NSString *ns=@"sdf,dsfs,dfd,fdf,df,dd";
	NSArray *comArr=[ns componentsSeparatedByString:@","];
	for(int i=0;i<[comArr count];i++){
		NSLog(@"componentsSeparatedByString===%@",[comArr objectAtIndex:i]);
	}
	
	//componentJoinedByString: 合并nsarray中的元素来创建字符串
	NSString *joinedStr=[comArr componentsJoinedByString:@"-->"];
	NSLog(@"joined---= %@",joinedStr);
	
	//可变数组
	NSMutableArray *mutableArr=[NSMutableArray arrayWithCapacity:40];
	[mutableArr addObject:@"aa"];
	[mutableArr addObject:@"bb"];
	[mutableArr addObject:@"cc"];
	[mutableArr addObject:@"dd"];
	
	for(int i=0;i<[mutableArr count];i++){
		NSLog(@"mutableArr==%@",[mutableArr objectAtIndex:i]);
	}
	
	//-----  -(void) removeObjectAtIndex:(unsinged) index; 删除指定索引的对象,
	//删除一个对象之后,数组中并没有留下漏洞,被删除对象后面的数组元素的哦被前移来填补空缺
	[mutableArr removeObjectAtIndex:2];
	for(int i=0;i<[mutableArr count];i++){
		NSLog(@"removeObjectAtIndex == %@",[mutableArr objectAtIndex:i]);
	}
	
	//枚举
	//NSEnumerator ,它是cocoa用来描述这种集合迭代运输的方法
	//-(NSEnumerator *) objectEnumerator;
	NSEnumerator *enumerator=[mutableArr objectEnumerator];
	id thingie;
	while(thingie=[enumerator nextObject]){
		NSLog(@"i found %@",thingie);
	}
	
	//快速枚举
	for(NSString *string in mutableArr){
		NSLog(@"for in == %@",string);
	}
	
	//NSDictionary 字典
	/*
	 NSDictionary 是在给定的关键字(通常是一个NSString字符串)下存储一个数值(可以是任何类型的对象)。然后你可以用这个关键字来查找相应的数值。
	 NSDictionary 是键查询的优化存储方式。它可以立即找出要查询的数据,而不需要遍历整个数组进行查找。
	 
	 +(id) dictionaryWithObjectAndKeys:(id) firstObject,....;
	 该方法接收对象和关键字交替出现的系列,以nil值作为终止符号。
	 **/
	NSDictionary *dic=[NSDictionary dictionaryWithObjectsAndKeys:@"aaa",@"a",@"bbb",@"b",nil];
	NSString *dicStr=[dic objectForKey:@"a"];
	if([dicStr isEqualToString:@"aaa"]){
		NSLog(@"------------00000000000000000");
	}
	
	//可变字典
	NSMutableDictionary *mutableDic=[NSMutableDictionary dictionaryWithCapacity:50];
	[mutableDic setObject:@"1111" forKey:@"1"];
	[mutableDic setObject:@"222" forKey:@"2"];
	
	//删除 -(void) removeObjectForKe:(id) key;
	[mutableDic removeObjectForKey:@"2"];
	
	NSArray *keyArr=[mutableDic allKeys];
	for(NSString *str in keyArr){
		NSLog(@"key== %@",str);
		NSLog(@"value== %@",[mutableDic objectForKey:str]);
	}
	
	
	//各种数值,NSNumber NSValue
	/*
	 cocoa 提供了NSNumber类来包装基本数据类型
	 +(NSNumber *) numberWithChar:(char) value;
	 +(NSNumber *) numberWithInt:(int) value;
	 +(NSNumber *) numberWithFloat:(float) value;
	 +(NSNumber *) numberWthiBool:(BOOL) value;
	 
	 -(char) charValue;
	 -(int) intVlaue;
	 -(float) floatValue;
	 -(BOOL) boolValue;
	 -(NSString *) stringValue;
	 
	 
	 **/
	NSNumber *number;
	number=[NSNumber numberWithInt:3];
	[mutableDic setObject:number forKey:@"int"];
	
	int num=[[mutableDic objectForKey:@"int"] intValue];
	NSLog(@"int object value== %d",num);
	
	
	//NSValue .NSNumber实际上是NSValue的子类,NSValue可以包装任意值
	
	/**
	 +(NSValue *) valueWithBytes:(const void *) value objCType:(const char *) type;
	 传递的参数是你想要包装的数值的地址,通常,得到的是你想要存储的变量的地址(在c语言里适用操作符 & ),你也可以提供一个描述这个数据类型的字符串,通常用来说明struct中实体的类型和大小。你不用自己写代码
	 来生成这个字符串,@encode编译器指令可以接受数据类型的名称并为你生成合适的字符串
	 */
	NSRect rect= NSMakeRect(1, 2, 30, 40);
	
	NSValue *value;
	value=[NSValue valueWithBytes:&rect	objCType:@encode(NSRect)];
	NSMutableArray *mr=[NSMutableArray arrayWithCapacity:50];
	[mr addObject:value];
	 
	//getValue 提取数据
	/**
	 -(void) getValue:(void *) value; 要传递的是存储这个数值的变量的地址
	 */
	
	/***
	value=[mr objectAtIndex:0];
	 
	NSRect r;
	NSLog(@"00000 ===%@",r);
	[value getValue:&r];
	NSLog(@"111== %@",r);
	*/
	
	/**
	 +(NSValue *) valueWithPoint:(NSPoint) point;
	 +(NSValue *) valueWithSize:(NSSize) size;
	 +(NSValue *) valueWithRect:(NSRect) rect;
	 
	 
	 
	 -(NSPoint) pointValue;
	 -(NSSize) sizeValue;
	 -(NSRect) rectValue;
	 
	 */
	
	//NSNull 
	/*
	 *+(NSNull *) null; 
	*/
	[mutableDic setObject:[NSNull null] forKey:@"fax"];
	id fax;
	fax=[mutableDic objectForKey:@"fax"];
	if(fax==[NSNull null]){
		NSLog(@"pppppppppppppppppp");
	}
	
	[pool drain];
    return 0;
}
 
分享到:
评论

相关推荐

    Objecive-C语法与iPhone开发入门

    2. **类与对象**:Objective-C基于C语言,增加了类的概念。类是对象的蓝图,定义了对象的属性(ivar)和行为(方法)。对象是类的实例,通过`alloc`和`init`方法创建。 3. **类别(Category)**:Objective-C允许你...

    Objective-C基础教程,从入门到精通

    5. Blocks(区块/闭包):Objective-C的匿名函数,常用于异步操作和回调。 四、Foundation框架与UIKit框架 Foundation框架是Objective-C的基础框架,提供了数据类型、集合类、线程、文件系统等基本功能。UIKit框架...

    平原型生活垃圾填埋场扩容措施研究及应用_刘志刚.pdf

    平原型生活垃圾填埋场扩容措施研究及应用_刘志刚.pdf

    跨模型迁移指南:将OpenAI项目快速适配DeepSeekAPI.pdf

    在日常的工作和学习中,你是否常常为处理复杂的数据、生成高质量的文本或者进行精准的图像识别而烦恼?DeepSeek 或许就是你一直在寻找的解决方案!它以其高效、智能的特点,在各个行业都展现出了巨大的应用价值。然而,想要充分发挥 DeepSeek 的优势,掌握从入门到精通的知识和技能至关重要。本文将从实际应用的角度出发,为你详细介绍 DeepSeek 的基本原理、操作方法以及高级技巧。通过系统的学习,你将能够轻松地运用 DeepSeek 解决实际问题,提升工作效率和质量,让自己在职场和学术领域脱颖而出。现在,就让我们一起开启这场实用又高效的学习之旅吧!

    智能推荐系统实战:DeepSeekAPI在电商场景的个性化排序应用.pdf

    在日常的工作和学习中,你是否常常为处理复杂的数据、生成高质量的文本或者进行精准的图像识别而烦恼?DeepSeek 或许就是你一直在寻找的解决方案!它以其高效、智能的特点,在各个行业都展现出了巨大的应用价值。然而,想要充分发挥 DeepSeek 的优势,掌握从入门到精通的知识和技能至关重要。本文将从实际应用的角度出发,为你详细介绍 DeepSeek 的基本原理、操作方法以及高级技巧。通过系统的学习,你将能够轻松地运用 DeepSeek 解决实际问题,提升工作效率和质量,让自己在职场和学术领域脱颖而出。现在,就让我们一起开启这场实用又高效的学习之旅吧!

    成本控制秘籍:DeepSeekAPI计费机制与优化方案全解.pdf

    在日常的工作和学习中,你是否常常为处理复杂的数据、生成高质量的文本或者进行精准的图像识别而烦恼?DeepSeek 或许就是你一直在寻找的解决方案!它以其高效、智能的特点,在各个行业都展现出了巨大的应用价值。然而,想要充分发挥 DeepSeek 的优势,掌握从入门到精通的知识和技能至关重要。本文将从实际应用的角度出发,为你详细介绍 DeepSeek 的基本原理、操作方法以及高级技巧。通过系统的学习,你将能够轻松地运用 DeepSeek 解决实际问题,提升工作效率和质量,让自己在职场和学术领域脱颖而出。现在,就让我们一起开启这场实用又高效的学习之旅吧!

    Wallpaper Engine 壁纸一键提取

    Wallpaper Engine 是一款广受欢迎的动态壁纸软件,允许用户将各种动态、交互式壁纸应用到桌面上。其丰富的创意工坊内容让用户可以轻松下载和分享个性化的壁纸。而“一键提取”功能则是 Wallpaper Engine 中一个非常实用的工具,能够帮助用户快速提取和保存壁纸资源,方便后续使用或分享。

    性价比革命:DeepSeekAPI成本仅为GPT-4的3%的技术揭秘.pdf

    在日常的工作和学习中,你是否常常为处理复杂的数据、生成高质量的文本或者进行精准的图像识别而烦恼?DeepSeek 或许就是你一直在寻找的解决方案!它以其高效、智能的特点,在各个行业都展现出了巨大的应用价值。然而,想要充分发挥 DeepSeek 的优势,掌握从入门到精通的知识和技能至关重要。本文将从实际应用的角度出发,为你详细介绍 DeepSeek 的基本原理、操作方法以及高级技巧。通过系统的学习,你将能够轻松地运用 DeepSeek 解决实际问题,提升工作效率和质量,让自己在职场和学术领域脱颖而出。现在,就让我们一起开启这场实用又高效的学习之旅吧!

    本地部署DeepSeek模型:API调用与自有算力结合的混合架构设计.pdf

    在日常的工作和学习中,你是否常常为处理复杂的数据、生成高质量的文本或者进行精准的图像识别而烦恼?DeepSeek 或许就是你一直在寻找的解决方案!它以其高效、智能的特点,在各个行业都展现出了巨大的应用价值。然而,想要充分发挥 DeepSeek 的优势,掌握从入门到精通的知识和技能至关重要。本文将从实际应用的角度出发,为你详细介绍 DeepSeek 的基本原理、操作方法以及高级技巧。通过系统的学习,你将能够轻松地运用 DeepSeek 解决实际问题,提升工作效率和质量,让自己在职场和学术领域脱颖而出。现在,就让我们一起开启这场实用又高效的学习之旅吧!

    这是一份非常有意义的实习报告

    这是一份非常有意义的实习报告

    用Python玩转DeepSeek:代码生成接口的10个实战案例.pdf

    在日常的工作和学习中,你是否常常为处理复杂的数据、生成高质量的文本或者进行精准的图像识别而烦恼?DeepSeek 或许就是你一直在寻找的解决方案!它以其高效、智能的特点,在各个行业都展现出了巨大的应用价值。然而,想要充分发挥 DeepSeek 的优势,掌握从入门到精通的知识和技能至关重要。本文将从实际应用的角度出发,为你详细介绍 DeepSeek 的基本原理、操作方法以及高级技巧。通过系统的学习,你将能够轻松地运用 DeepSeek 解决实际问题,提升工作效率和质量,让自己在职场和学术领域脱颖而出。现在,就让我们一起开启这场实用又高效的学习之旅吧!

    爱华AIWA HS-J9磁带随身听维修服务手册 说明书电路原理图PCB图

    爱华AIWA HS-J9磁带随身听维修服务手册 说明书电路原理图PCB图

    从ChatGPT到DeepSeek:API迁移指南与参数映射对照表.pdf

    在日常的工作和学习中,你是否常常为处理复杂的数据、生成高质量的文本或者进行精准的图像识别而烦恼?DeepSeek 或许就是你一直在寻找的解决方案!它以其高效、智能的特点,在各个行业都展现出了巨大的应用价值。然而,想要充分发挥 DeepSeek 的优势,掌握从入门到精通的知识和技能至关重要。本文将从实际应用的角度出发,为你详细介绍 DeepSeek 的基本原理、操作方法以及高级技巧。通过系统的学习,你将能够轻松地运用 DeepSeek 解决实际问题,提升工作效率和质量,让自己在职场和学术领域脱颖而出。现在,就让我们一起开启这场实用又高效的学习之旅吧!

    房屋租赁合同[示范文本].doc

    房屋租赁合同[示范文本].doc

    智能体开发:将DeepSeekAPI集成到知识库系统的全流程.pdf

    在日常的工作和学习中,你是否常常为处理复杂的数据、生成高质量的文本或者进行精准的图像识别而烦恼?DeepSeek 或许就是你一直在寻找的解决方案!它以其高效、智能的特点,在各个行业都展现出了巨大的应用价值。然而,想要充分发挥 DeepSeek 的优势,掌握从入门到精通的知识和技能至关重要。本文将从实际应用的角度出发,为你详细介绍 DeepSeek 的基本原理、操作方法以及高级技巧。通过系统的学习,你将能够轻松地运用 DeepSeek 解决实际问题,提升工作效率和质量,让自己在职场和学术领域脱颖而出。现在,就让我们一起开启这场实用又高效的学习之旅吧!

    单片机 入门学习视频教程 自学资料

    单片机 入门学习视频教程 自学资料

    模型定制化实战:基于DeepSeek的行业术语微调教程.pdf

    在日常的工作和学习中,你是否常常为处理复杂的数据、生成高质量的文本或者进行精准的图像识别而烦恼?DeepSeek 或许就是你一直在寻找的解决方案!它以其高效、智能的特点,在各个行业都展现出了巨大的应用价值。然而,想要充分发挥 DeepSeek 的优势,掌握从入门到精通的知识和技能至关重要。本文将从实际应用的角度出发,为你详细介绍 DeepSeek 的基本原理、操作方法以及高级技巧。通过系统的学习,你将能够轻松地运用 DeepSeek 解决实际问题,提升工作效率和质量,让自己在职场和学术领域脱颖而出。现在,就让我们一起开启这场实用又高效的学习之旅吧!

    5个提升DeepSeekAPI生成质量的调参技巧,开发者必看!.pdf

    在日常的工作和学习中,你是否常常为处理复杂的数据、生成高质量的文本或者进行精准的图像识别而烦恼?DeepSeek 或许就是你一直在寻找的解决方案!它以其高效、智能的特点,在各个行业都展现出了巨大的应用价值。然而,想要充分发挥 DeepSeek 的优势,掌握从入门到精通的知识和技能至关重要。本文将从实际应用的角度出发,为你详细介绍 DeepSeek 的基本原理、操作方法以及高级技巧。通过系统的学习,你将能够轻松地运用 DeepSeek 解决实际问题,提升工作效率和质量,让自己在职场和学术领域脱颖而出。现在,就让我们一起开启这场实用又高效的学习之旅吧!

    参数调优手册:temperature和top_p对输出结果的影响实验.pdf

    在日常的工作和学习中,你是否常常为处理复杂的数据、生成高质量的文本或者进行精准的图像识别而烦恼?DeepSeek 或许就是你一直在寻找的解决方案!它以其高效、智能的特点,在各个行业都展现出了巨大的应用价值。然而,想要充分发挥 DeepSeek 的优势,掌握从入门到精通的知识和技能至关重要。本文将从实际应用的角度出发,为你详细介绍 DeepSeek 的基本原理、操作方法以及高级技巧。通过系统的学习,你将能够轻松地运用 DeepSeek 解决实际问题,提升工作效率和质量,让自己在职场和学术领域脱颖而出。现在,就让我们一起开启这场实用又高效的学习之旅吧!

Global site tag (gtag.js) - Google Analytics