ios开发理解nil,Nil, NULL

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 *)函数创建

3

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];

}

时间: 2024-10-13 12:21:43

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

nil,Nil,NULL和NSNull理解(ios)

nil nil 是 ObjC 对象的字面空值,对应 id 类型的对象,或者使用 @interface 声明的 ObjC 对象. 例如: ? NSString *someString = nil; NSURL *someURL = nil; id someObject = nil; if (anotherObject == nil) // do something 定义: ? // objc.h #ifndef nil # if __has_feature(cxx_nullptr) #   def

iOS中类和对象,还有nil,Nil,NULL的区别

一.类和对象 类与对象的概念: 1.类是对同一类事物的高度抽象,类中定义了这一类对象所应具有的静态属性(属性)和动态属性(方法) 2.对象是类的一个实例,是一个具体的事物 3.类其实就是一种数据类型,它的变量就是对象 4.类与类之间的关系--继承关系 eg:学生与小学生,小学生也是学生,所以学生是小学生的父类,小学生是学生的子类 OC与面向对象: 1.对象是oc程序的核心.“万事万物皆对象”是程序中的核心思想 2.类是用来创建同一类型的对象的模板,在一个类中定义了该类对象所具有的成员变量及方法

iOS 关于nil和Nil及null与&lt;null&gt;的区别

问题是这样的. NSDictionary *sample = [NSJSONSerialization JSONObjectWithData:received options:NSJSONReadingMutableLeaves error:&error]; NSString *messageInfo = [sample objectForKey:@"message"]; sample是一个字典,messsageInfo是从字典中根据key值取得的,然后通过log可以知道mes

懒加载的用处和赋nil操作[iOS开发教程]

懒加载的用处和赋nil操作 1:数据,清空操作: self.array = nil; 2:归档从新从本地获取数据 self.archive = nil; ##id = nil的用处 block当参数,并在方法体中如下调用 safe block版本 <#block#> ? <#block#>() : nil; 或进阶版本:safe block 加 绑定代码版本 if(<#block#>) { <#block#>(); <#Code:在请求成功后同时进行的

&lt;转&gt;ios nil、NULL和NSNull 的使用

nil用来给对象赋值(Objective-C中的任何对象都属于id类型),NULL则给任何指针赋值,NULL和nil不能互换,nil用于类指针赋值(在Objective-C中类是一个对象,是类的meta-class的实例), 而NSNull则用于集合操作,虽然它们表示的都是空值,但使用的场合完全不同. 示例如下: id object = nil; // 判断对象不为空 if (object) { } // 判断对象为空 if (object == nil) { } // 数组初始化,空值结束 N

ios nil、NULL和NSNull 的使用

nil用来给对象赋值(Objective-C中的任何对象都属于id类型),NULL则给任何指针赋值,NULL和nil不能互换,nil用于类指针赋值(在Objective-C中类是一个对象,是类的meta-class的实例), 而NSNull则用于集合操作,虽然它们表示的都是空值,但使用的场合完全不同. 示例如下: id object = nil; // 判断对象不为空 if (object) { } // 判断对象为空 if (object == nil) { } // 数组初始化,空值结束 N

iOS中nil,Nil,NULL之间的区别

1.说明 nil:指向oc中对象的空指针 Nil:指向oc中类的空指针 NULL:指向其他类型的空指针,如一个c类型的内存指针 NSNull:在集合对象中,表示空值的对象 若obj为nil: [obj message]将返回NO,而不是NSException 若obj为NSNull: [obj message]将抛出异常NSException 2.用法 nil和NULL从字面意思来理解比较简单,nil是一个对象,而NULL是一个值,我的理解为nil是将对象设置为空,而NULL是将基本类型设置为空

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

1.oc最好 用nil   [ nil  任意方法],不会崩溃 nil 是一个对象值.NULL是一个通用指针(泛型指针). 2. NSNULL,NULL和nil在本质上应该是一样的,NULL和nil其实就是0,但是在Objective-c中,   对于像NSArray这样的类型,nil或NULL不能做为加到其中的Object,如果定义了一个NSArray,为其分配了内存,又想设置其中的内容为空,   则可以用[NSNULL null返回的对对象来初始化NSArray中的内容,3.因为在NSArr

iOS 中nil,Nil,NULL,NSNull的区别

类与对象的概念 类是对同一类事物高度的抽象,类中定义了这一类对象所应具有的静态属性(属性)和动态属性(方法). 对象是类的一个实例,是一个具体的事物. 类与对象是抽象与具体的关系. 类其实就是一种数据类型,它的变量就是对象. nil.Nil.NULL.NSNull的区别 nil:指向一个对象的空指针 Nil:指向一个类的空指针 NULL:指向其他类型(如:基本类型.C类型)的空指针 NSNull:通常表示集合中的空值 举例: NSURL *url = nil; Class class = Nil