Objective-C常用类型、对象、方法
结构体
NSRange range=NSMakeRange(8,10);从0数第八个元素开始长度为10;
NSString *str=NSStringFormRange(range);
NSLog(@”%@”,str);//打印{8,10}
字符串里的字符范围或者数据里的元素范围
NSPoint代表的是笛卡尔平面中的一个点,也就是坐标(x,y);NSMakePoint()但经常见到CGPoint(8,9);当然应该也有方法CGMakePoint()
NSSize用来表示长度和宽度NSMakeSize()。使用方式和上面的NSRange一样。但经常见到CGSize(8,9);
NSRect和CGRect(CGPoint,CGSize)一样;一个实现两个结构
他们都是结构typedef CGPoint NSPoint;其余一样
类
NSString类NSString *str=@”String”;NSString* str=[NSString stringWithString:@”string”];这里再次说明调用静态方法不需要释放内存,自己写静态方法也应该如此
Str=[NSString stringWithUTF8String:@”string”];
str=[NSString stringWithFormat:@”asdsd%@,%@”,@”dsfdsfg”,@”sf”];
NSString *str=@”abc”;
str=[str uppercaseString];//转换为大写
str=[str lowercaseString];//转换成小写
str=[str capitalizedString];//首字母大写,其他字母小写
BOOL result=[@”abc” idEqualToString:@”abc”];
//比较两个字符串,相同是YES(1),不同时NO(0);
NSComparisonResult result2=[@”abc” compare:@”adc”];
//两个字符串内容的比较,ASCLL值的比较
If(result2==NSorderSame)
{
NSLog(@”两个字符串内容相同”);
}else if(result2== NSOrderAscending)
{
“右边大于左边”
}else
{
“左边大于右边”
}
stringByAppendingString的功能是在一个字符串后面增加一个新字符串
substringToIndex主要的功能是截取字符串
-(BOOL)hasPrefix: (NSString *)astring;//是否以aString开头
-(BOOL)hasBuffix: (NSString *)aString;//是否以aString结尾
|
方法 |
说明 |
|
+(id)stringWithContentsOfFile:path encoding:enc error err |
创建一个新字符串并将其设置为path指定的文件的 内容,使用字符编码enc,在err上返回错误 |
|
+(id)stringWithContentsOfURL:url encoding:enc error:err |
创建一个新字符串,并将其设置为url所指定的 内容,使用字符编码enc,在err上返回错误 |
|
+(id)string |
创建一个新的空字符串 |
|
-(id)initWithString:nsstring |
创建一个新的空字符串,并将其内容设 置设置为nsstring内容 |
|
-(id)initWithContentsOfFile:path encoding:enc error:err |
将字符串设置为path指定的文件的内容 |
|
-(id)initWithContentsOfURL:url encoding:enc error:err |
将字符串设置为url所指定的内容,使用 enc字符编码,在err上返回错误 |
|
-(UNSIgned int)length |
返回字符串中的字符数目 |
|
-(unichar)characterAtIndex:i |
返回索引i虽在的Unicode字符 |
|
-(NSString *)substringFromIndex:i |
返回从i开始到结尾的子字符串 |
|
-(NSString *)substringWithRange:range |
根据指定范围返回子字符串 |
|
-(NSString *)substribgToIndex:i |
返回从字符串开始位置到i的子字符串 |
|
-(NSComparator *)caseInsensitiveCompare:nsstring |
比较两个字符串(忽略大小写) |
|
-(NSComparator *)Compare:nsstring |
比较两个字符串的大小 |
|
-(BOOL)hasPrefix:nsstring |
测试字符串是否以nsstring开始 |
|
-(BOOL)hasSuffix:nsstring |
测试字符串是否以nsstring结尾 |
|
-(BOOL)isEqualToString:nsstring |
测试两个字符串是否相等 |
|
-(NSString *)caoitalizedString |
返回字符串,串中的每个单词的首字母大写, 其余字母小写 |
|
-(NSString *)lowercaseString |
返回转换为小写的字符串 |
|
-(NSString)uppercaseString |
返回转换为大写的字符串 |
|
-(const char *)UTF8String |
返回UTF8编码格式的字符串 |
|
-(double)doubleValue |
返回转换为double类型的字符串 |
|
-(float)floatValue |
返回转换为float类型的字符串 |
|
-(NSInteger)integerValue |
返回转换为NSInteger类型的字符串 |
|
-(int)intValue |
返回转换为int类型的字符串 |
NSString* str=@”1,2,3,4”;
NSArray *array=[str componentsSeparatedByString:@”,”];//以,为分隔符把字符串分成数组
NSLog(@”%@”,array);//默认的toString方法会把array数组打印出来
NSMutableArray *compents=[NSMutableArray array];
[components addObject:@”Users”];
[components addObject:@”MY”];
[components addObject:@”Desktopd”]//数组中添加元素
NSString* path=[NSString pathWithComponents:components];
//将数组中的所有字符串拼接成一个路径//打印显示Users/MY/Desktopd
NSArray *cmps=[path pathComponents];//将路径分割开
NSLog(@”%@”,cmps);
{
Users,
MY,
Desktopd
}//字符串默认打印出来就是这样
NSString * str=@”12”;
Int a=[str intValue];//字符串转换
字符串操作比较多,这里不一一解释,用到再说
NSMutableString可变字符串
NSMutableString *str=[[NSMutableString alloc] initWithCapacity:10];//分配10个存储空间
[str setString:@”1234”];//设置字符串内容
[str appendString:@”567”];//拼接字符串
[str appendFormat:@”age is %i and height is %.2f”,27,1.55f];//拼接字符串并且按格式来
NSRange range=[str rangeOfString:@”height”];//替换字符串
//NSRange range=NSMakeRange(7,3);//效果一样
[str replaceCharactersInRange:range withString:@”no”];
[str insertString:@”abc” atIndex:2];//插入字符串
NSLog(@”%@”,str);//12abc3456age is 27 and no is 1.55
[str release];//释放内存
读取文本信息:
NSError *error;
NSString * path=@”/Users/apple/Desktop/test.txt”;//路径
NSString*str1=[NSString stringWithContentsOfFile:path encoding:NSUTF8StringEncoding error:&errorl];//路径、编码、错误
//NSString*str1=[NSString stringWithContentsOfFile:path encoding:NSUTF8StringEncoding error:nill];//路径、编码、错误
If(error==nil)
{
NSLog(@”读取文件成功:%@”,str1);
}
else
{
NSLog(@”读取文件失败:%@”,error);
}
//NSLog(@”%@”,str1);//打印除文本内容
另一种读取信息:
NSURL *url=[NSURL URLWithString:@”file://Users/apple/Desktop/test.txt”];//读取网页也可以@“www.baidu.com”
NSString*str1=[NSString stringWithContentsOfURL:url encoding:NSUTF8StringEncoding error:&errorl];//路径、编码、错误
写入文件
NSString *str=@”abc”;
NSString *path=@”/Users/apple/Desktop/test.txt”;
NSError *error;
[str writeToFile:path atomically:YES ecoding:NSUTF8StringEncoding Error:&error];
//YES代表是原子性操作,也就是会创建一个中间的缓冲临时变量
NSArray数组,OC中的数组仅支持OC对象,也就是说没有int,float,struct,enum,char
NSArray *array=[NSArray array];//创建一个空的数组
array=[NSArray arrayWithObject:@”123”];//创建有一个元素的数组
array=[[NSArray arrayWithObjects:@”a”,@”b”,@”c”,nill ]];//创建有多个元素的数组。nil数组的结束标示符
int count=[array count];//数组的长度
[array containsObject:@”a”];//是否包含字符串a
[array lastObject];//最后一个元素c
[array objectAtIndex:1];//第一个元素
OC中关于插入,提取,截取元素大部分都是从0开始
当把一个对象塞进数组中时,这个对象的计数器会加1,也就是说数组会对它做一次retain操作。不过不用担心,数组被销毁时,会对内部的所有元素都做一次release操作。谁retain谁release;
NSArray *array=[NSArray arrayWithObjects:@”1”,@”2”,@”3”,nill ];
NSEnumerator *enumerator=[array objectEnumerator];//获取数组的迭代器
NSEnumerator *enumerator=[array objectEnumerator];//反序迭代器(从尾部开始遍历元素)
Id obj=nill;
NSArray *array2=[enumerator allObjects];//获取所有元素
While(obj==[enumerator nextObject])
{
NSLog(@”obj=%@”,obj);//获取下一个元素
}
NSObject类
Id stu=[[tudent alloc] init] autorelease]
If([stu isKindOfClass: [Person class]])//判断是否是某个类或者子类
反射:将字符串转换成类
NSString *str=@”Person”;
Class class=NSClassFormString(str);//字符串转换成类,这句已经转换成功
NSString *name=NSStringFormClass([Person class]);//从类名转换成字符串
方法的反射:
NSString *method=@”test”;
SEL selector=NSSelectorFormString(method);//反射,转换
[person performSelector:selectort];//调用方法
Copy的用法,copy出一个新的对象,修改新的对象不会影响到旧的对象copy相当于retain,计数器加1,mutableCopy不加1
NSString *string=[[NSString alloc] initWithFormat:@”age is %i”,10];
NSString *str=[string copy];//string的计数器是2
NSString*str=[string mutableCopy];//string的计数器是1;
Objective-C常用类型、对象、方法的更多相关文章
- Document-对象属性和常用的对象方法
Document-对象属性和常用的对象方法 对象属性 document.title //设置文档标题等价于HTML的title标签 document ...
- 【跟着子迟品 underscore】常用类型判断以及一些有用的工具方法
Why underscore 最近开始看 underscore.js 源码,并将 underscore.js 源码解读 放在了我的 2016 计划中. 阅读一些著名框架类库的源码,就好像和一个个大师对 ...
- Underscore.js 常用类型判断以及一些有用的工具方法
1. 常用类型判断以及一些有用的工具方法 underscore.js 中一些 JavaScript 常用类型检查方法,以及一些工具类的判断方法. 首先我们先来谈一谈数组类型的判断.先贴出我自己封装好的 ...
- [PowerShell] 快速入门, 基本语法, 常用类型, 函数, .NET 互操作
PowerShell 快速入门 开始之前, 我们认定你已经有一定的编程基础, 熟悉 .NET 中的类型与对象. 此文章对于 .NET 开发者来说更简单哦! 在 PowerShell 中, 几乎一切都是 ...
- 第1节 Scala基础语法:5、6、7、8、基础-申明变量和常用类型,表达式,循环,定义方法和函数
4. Scala基础 4.1. 声明变量 package cn.itcast.scala object VariableDemo { def main(args: Array[Strin ...
- ES6 对象定义简写及常用的扩展方法
1.ES6 对象定义简写 es6提供了对象定义里的属性,方法简写方式: 假如属性和变量名一样,可以省略,包括定义对象方法function也可以省略 <script type="text ...
- 常用的Date对象和Math对象方法
Date对象方法: 当前用户本地时间 let time = new Date(); 获取整数年 console.log(time.getFullYear()); 获取当前月(月份要加1) consol ...
- python—— 文件的打开模式和文件对象方法 & os、os.path 模块中关于文件、目录常用的函数使用方法
引用自“鱼c工作室” 文件的打开模式和文件对象方法 : https://fishc.com.cn/forum.php?mod=viewthread&tid=45279&ext ...
- Asp.Net SignalR 使用记录 技术回炉重造-总纲 动态类型dynamic转换为特定类型T的方案 通过对象方法获取委托_C#反射获取委托_ .net core入门-跨域访问配置
Asp.Net SignalR 使用记录 工作上遇到一个推送消息的功能的实现.本着面向百度编程的思想.网上百度了一大堆.主要的实现方式是原生的WebSocket,和SignalR,再次写一个关于A ...
- JavaScript中常用的几种类型检测方法
javascript中类型检测方法有很多: typeof instanceof Object.prototype.toString constructor duck type 1.typeof 最常见 ...
随机推荐
- java_字符
例一:数据类型转换 package javaweb1200; public class 字符就是数字吗 { public static void main(String[] args) { Syste ...
- C#开发---利用特性自定义数据导出到Excel
网上C#导出Excel的方法有很多.但用来用去感觉不够自动化.于是花了点时间,利用特性做了个比较通用的导出方法.只需要根据实体类,自动导出想要的数据 1.在NuGet上安装Aspose.Cells或 ...
- DNA比对
[编程题](满分27分) 脱氧核糖核酸即常说的DNA,是一类带有遗传信息的生物大分子.它由4种主要的脱氧核苷酸(dAMP.dGMP.dCMT和dTMP)通过磷酸二酯键连接而成.这4种核苷酸可以分别记为 ...
- Android(java)学习笔记89:泛型概述和基本使用
package cn.itcast_01; import java.util.ArrayList; import java.util.Iterator; /* * ArrayList存储字符串并遍历 ...
- [Java]java反射随笔
类是面向对象的灵魂,一切事物都可以以类来抽象. 在java使用过程中,我们可能会经常用到一个反射的知识,只是别人都封装好的,如jdbc的加载驱动类有一句Class.for(“…jdbc…”).newI ...
- mysql root给其它用户授权问题
今天登录mysql,给其它用户授权遇到问题 mysql> grant all privileges on testdb.* to 'dbuser'@'10.4.14.14' identified ...
- JMS笔记(一)
1.jms概念 Java Message Service为 Java程序提供一种访问企业消息系统的方法,JMS应用由JMS生产者.JMS Provider.JMS消费者构成 1.1. 一条Messag ...
- #pragma CODE_SEG __NEAR_SEG NON_BANKED/#pragma CODE_SEG DEFAULT
在写到SCI 中断发送,中断接收程序的时候,在程序中会出现#pragma CODE_SEG __NEAR_SEG NON_BANKED/#pragma CODE_SEG DEFAULT,这两句话在程序 ...
- 【模拟,时针分针秒针两两夹角】【没有跳坑好兴奋】hdu - 5387 (多校#8 1008)
算是最好写的一道题了吧,最近模拟没手感,一次过也是很鸡冻o(* ̄▽ ̄*)o 注意事项都在代码里,没有跳坑也不清楚坑点在哪~ #include<cstdio> #include<cst ...
- ASP.NET中在不同的子域中共享Session
天遇到了这个问题,于是研究了一下.要解决这个问题,首先就要明白一些Session的机理.Session在服务器是以散列表形式存在的,我们都知道Session是会话级的,每个用户访问都会生成一个Sess ...