nil是一个对象指针为空,Nil是一个类指针为空,NULL是基本数据类型为空。这些可以理解为nil,Nil, NULL的区别吧。

iOS剪切板

UIPasteboard *pasteboard = [UIPasteboard generalPasteboard];

pasteboard.string = @"要赋给剪切板的字符串";

1 ID

可以传递任何消息给id,但如果该id不支持这个消息就会返回一个运行时异常,通常就是:“unrecognisedselector sent to instance to XXX” 消息。
 
2 SEL
SEL 类型也可以用NSSelectorFromString(NSString *)函数创建
 
nil 用来给对象赋值,
NULL 则给任何指针赋值,NULL 和 nil 不能互换,
nil 用于类指针赋值,而NSNull 则用于集合赋值,
如:
a.if (object == nil) {}//判断对象为空
 
b.UIViewController *controller = [NSArray objectAtIndex:i];//判断数组元素是否为空
if ((NSNull *)controller == [NSNull null]) {
//...
}
 
c.NSString *userId = [NSDictionary objectForKey:@"UserID"];//判断字典对象的元素是否为空
if (userId == [NSNull null]) {
}
4 预处理宏
a 关闭调试信息:
#define DLog();
b
打印文件名,行号,函数详情,函数名信息,
NSLog(@"%s %d %s",__FILE__, __LINE__,__PRETTY_FUNCTION__,__FUNCTION__);
#ifdef DEBUG
# define DLog(fmt,...) NSLog((@"%s [Line %d]" fmt), __PRETTY_FUNCTION__,__LINE__,##__VA_ARGS__);
#else
# define DLog(...);
#endif
 
5 自动释放池(AutoReleasePool)
在程序中,当有大量的自动变量需要管理时,你就需要自行创建 NSAutoreleasePool来管理;
在创建线程或者使用NSOperation时,也需要创建独立的NSAutoreasePool 来管理线程;
另外,重载didReceiveMemoryWarning()函数是一个好的编程习惯;
 
6 程序执行流程
所以流程应该是这样:

(loadView/nib文件)来加载view到内存 ——>viewDidLoad函数进一步初始化这些view ——>内存不足时,调用viewDidUnload函数释放views

—->当需要使用view时有回到第一步

如此循环
7 ASIHttpRequest 
http://www.dreamingwish.com/dream-2011/apples-third-party-development-libraries-asihttprequest.html
 
8 判断一个字符串是否为空
  if (str == nil)
  if ([str length] == 0)
 
9 处理数值对象
  a. NSInteger   -------   int
    NSNumber *numObj = [NSNumber numberWithInt:2];
    NSInteger  myInteger = [numObj integerValue];
    int a = [myInteger intValue];
  
   b. 浮点数值使用CGFloat。NSDecimalNumber 对象进行处理
NSDecimalNumber *myDecimalObj = [[NSDecimalNumber allo] initWithString:@"23.39"];
NSLog(@"myDecimalObj doubleValue = %6.3f",[myDecimalObj doubleValue]);
CGFloat myCGFloatValue = 43.4;
NSDecimalNumber *myOtherDecimalObj = [[NSDecimalNumber alloc] initWithFloat:myCGFloatValue];
NSLog(@"myOtherDecimalObj doubleValue=%6.3f",[myOtherDecimalObj doubleValue]);
 10 处理日期时间NSDate
     a. 获取当前日期时间的代码如下
NSDate *dateToDay = [NSDate date];
NSDateFormatter *df = [[NSDateFormatter alloc] init];
[df setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
NSLocale *locale = [[NSlocale alloc] initWithLocalIdentifier:@"en_US"];
[df setLocale:locale];
     b. 从字符串生成日期对象的代码如下
NSString *myDateString = @"2009-09-15 18:30:00";
NSDate *myDate = [df dateFromString: myDateString];
 
     c. 日期比较的代码
switch ([dateToDay compare:myDate]) {
case NSOrderedSame:
break;
case NSOrderedAscending:
break;
case NSOrderedDescending:
break;
default:
break;
}
 
11  常用数组操作
  a 判断数组中是否包含某个对象
  - (BOOL)containsObject:(id)anObject
b 增加、插入元素
NSMutableArray *array = [NSMutableArray alloc] init];
[array addObject:anObject];
[array insertObject:anObject atIndex:2];
[array addObjectsFromArray:anotherArray];
c 获取某个元素的索引值
NSInteger idx = [array indexOfObject:anObject];
d 更新数组元素
 [mutableArray replaceObjectAtIndex:idx withObject:[NSNumber numberWithInt:9]]
e 数组遍历
1.使用枚举
for (NSString *str in array) {
}
2 使用NSEnumerator
NSEnumerator *enumerator = [array objectEnumerator];
id obj;
for ( obj == [enumerator nextObject]) {
}
3.使用for循环
for (int i = 0; i < [array count]; i++) {
[array objectAtIndex:i];
}
 
12 字符串数组排序
a. NSArray *sortedArray = [array sortedArrayusingSelector:@selector(caseInsensitiveCompare:)];
b. NSCountedSet *cset = [[NSCountedSet alloc] initWithArray: array];
    NSArray *sorted = [[cset allObjects] sortedArrayUsingSelector:@selector(compare:)];
 
13 OC中产生随机数的方法
srandom(time(NULL));
arc4random()%n;
 
14 数组map操作(-makeObjectsPerformSelector())
该函数可以将一个操作作用在数组中的所有元素上,如;
NSArray *fighters = ...;
[fighters makeObjectsPerformSelector:@selector(fly:)];
 
- (void)fly:(id)sender {
}
 
15 对象数组排序(使用NSSortDescriptor)
 
16 对象数组过滤 (使用 NSPredicate)
NSPredicate *aPredicate = [NSpredicate predicateWithFormat:@"SELF.lastName beginswith[c] 'a'"];
NSArray *array = [array filteredArrayUsingPredicate:aPredicate];
 
17 删除数组中元素
一种更安全的方法,将满足条件的元素放进一个临时数组,再将这个数组返回,代码如下:
- (NSArray *) filterPersonWithLastName:(NSString *)filterText {
Person *person = [Person alloc ] init];
NSMutableArray *personList = [person creatTempraryList];
NSLog(@"before");
NSMutableArray *personsToRemove = [NSMutableArray array];
for (Person *person in personList) {
if (filterText && [filterText rangeOfString:person.laseName options:NSLiteralSearch | NSCaseInsensitiveSearch].length == 0)
[personsToRemove  addObject:person];
}
[personList removeObjectsInArray:personsToRemove];
}

ios开发理解nil,Nil, NULL的更多相关文章

  1. Objective C 中的nil,Nil,NULL和NSNull理解

    kenyo网友的原创说法是:做IOS开发的估计都对Objective-C的内存管理机制很头疼,一不小心程序就会出内存泄露,我也不例外,前几天被指针的置nil与release给搞惨了,今和大家详细解说一 ...

  2. IOS中nil/Nil/NULL的区别

    类与对象的概念 类是对同一类事物高度的抽象,类中定义了这一类对象所应具有的静态属性(属性)和动态属性(方法). 对象是类的一个实例,是一个具体的事物. 类与对象是抽象与具体的关系. 类其实就是一种数据 ...

  3. IOS中类和对象还有,nil/Nil/NULL的区别

    转自:http://blog.sina.com.cn/s/blog_5fb39f910101akm1.html 类与对象的概念 类是对同一类事物高度的抽象,类中定义了这一类对象所应具有的静态属性(属性 ...

  4. nil、Nil、NULL和NSNull的理解

    http://blog.sina.com.cn/s/blog_4930f8e60101h71b.html 其实早就想研究一下nil.Nil.NULL和NSNull之间的区别,只是工作上除了nil,其它 ...

  5. iOS 关于nil和Nil及null与<null>的区别

    问题是这样的. NSDictionary *sample = [NSJSONSerialization JSONObjectWithData:received options:NSJSONReadin ...

  6. iOS中nil、Nil、NULL、NSNull详解(转)

    ObjC 里面的几个空值符号经常会差点把我搞死,这些基础的东西一点要弄清楚才行,以提高码农的基本素质. nil nil 是 ObjC 对象的字面空值,对应 id 类型的对象,或者使用 @interfa ...

  7. ios nil、NULL和NSNull 的使用

    nil用来给对象赋值(Objective-C中的任何对象都属于id类型),NULL则给任何指针赋值,NULL和nil不能互换,nil用于类指针赋值(在Objective-C中类是一个对象,是类的met ...

  8. IOS 学习笔记 2015-03-20 O之 nil,Nil,NULL,NSNull

    1.oc最好 用nil   [ nil  任意方法],不会崩溃 nil 是一个对象值.NULL是一个通用指针(泛型指针). 2. NSNULL,NULL和nil在本质上应该是一样的,NULL和nil其 ...

  9. iOS解析数据判断nil NULL Null的方法

    + (BOOL)isNil:(NSObject*)obj { if (obj == nil || obj == NULL) { return YES; } if ([obj isKindOfClass ...

随机推荐

  1. Qt入门1---widget、mainwindow和Dialog区别

    摘要: 看了一个月的Qt,居然没有理清Qt中 ------------------------------------ 1.QMainWindow A main window provides a f ...

  2. 【每日scrum】NO.7

    Yesterday:学习和设计路线的编程 Today:编写代码 Problem:.在设计查询参观路线的时候,整个逻辑特别的混乱,设想了各种树,图以及网的遍历问题,但经过多次与同学的交流以及网上的查询资 ...

  3. Struts2重定向

    第一方式:  参数之间必须使用&   .&是&在xml中转义字符  <result name="error" type="redirect& ...

  4. 创建ubuntu软件源

    缘起:虚拟机需要安装一些文件,但是直接从外网下载比较慢,而且安装iso包中是有这些软件的,所以创建一个ubuntu  apt server ubuntu 12.04, 本机192.168.0.124, ...

  5. 遗传学详解及Matlab算法实现

    遗传学算法概述 从之前转载的博客<非常好的理解遗传算法的例子>中可以知道,遗传学算法主要有6个步骤: 1. 个体编码 2. 初始群体 3. 适应度计算 4. 选择运算 5. 交叉运算 6. ...

  6. ueditor:原谅我这一生不羁放纵爱独特

    客户指明道姓需要使用百度编辑器,好吧,虽然自从李彦宏把一个好好的千千静听搞得节操尽碎之后,我就对百度的东西毫无好感,但是客户是上帝嘛,不就一个文本编辑器嘛,弄之,始料未及的是,就是这样一个简单的文本编 ...

  7. android 开发 system/app目录下面有多个重复包名的apk,会不会冲突

    环境:已经拥有了root权限的android系统,我们的apk是开机启动 测试:将2个相同的版本拷贝到系统system/app目录下面 adb root #获取root权限,前提是已经开放了root权 ...

  8. 前端之JavaScript第一天学习(1)-JavaScript 简介

    javaScript 是世界上最流行的编程语言. 这门语言可用于 HTML 和 web,更可广泛用于服务器.PC.笔记本电脑.平板电脑和智能手机等设备. JavaScript 是脚本语言 JavaSc ...

  9. PCA算法

    本文出处:http://blog.csdn.net/xizhibei http://www.cnblogs.com/bourneli/p/3624073.html PrincipalComponent ...

  10. Leetcode#56 Merge Intervals

    原题地址 排序+合并,没啥好说的 第一次尝试C++的lambda表达式,有种写js的感觉,很神奇 c11就支持了lambda表达式,仔细想想,我学C++大概就是在09~10年,c11还没有发布,不得不 ...