在observeValueForKeyPath:ofObject:change:context:- 为什么文档使用NULL而不是nil在不指定上下文指针时?
我想知道的区别nil,NIL和null.我用Google搜索了一下,发现了这个:
nil - >指向Objective-C对象的null指针
NIL - >指向Objective-C类的null指针
null - > null指向原始类型或缺少数据的指针
但我无法清楚地理解术语"Objective-C对象"和"类".
请向我解释一下.此外,有没有像任何文字NSNull或NSNil在Objective-C?如果是这样,那么请解释它的用途.
我基本上有一个Youtube网址作为NSString,但我需要提取网址中显示的视频ID.我在php或其他基于Web的编程语言中找到了很多关于如何做到这一点的教程,但在目标c中没有...
我基本上寻找一个方法,要求NSString url作为参数,并将视频ID作为另一个nsstring返回...
任何人都知道如何做到这一点或任何教程?
其实我的问题是:是null和nil等价的?
我有一个例子,但是当他们不相同时我很困惑.
NSNull *nullValue = [NSNull null];
NSArray *arrayWithNull = [NSArray arrayWithObject:nullValue];
NSLog(@"arrayWithNull: %@", arrayWithNull);
id aValue = [arrayWithNull objectAtIndex:0];
if (aValue == nil) {
NSLog(@"equals nil");
} else if (aValue == [NSNull null]) {
NSLog(@"equals NSNull instance");
if ([aValue isEqual:nil]) {
NSLog(@"isEqual:nil");
}
}
Run Code Online (Sandbox Code Playgroud)
在这里,在上述情况下,它表明,无论null和nil不相等并显示"等于NSNull实例"
NSString *str=NULL;
id str1=nil;
if(str1 == str)
{
printf("\n IS EQUAL........");
}
else
{
printf("\n NOT EQUAL........");
}
Run Code Online (Sandbox Code Playgroud)
在第二种情况下,它显示两者相等,并显示"IS EQUAL".
任何人的帮助将不胜感激.
谢谢Monish.
只是想弄清楚什么是最佳实践:当使用方法时,(NSError**)发送它nil还是更好NULL?
例如,
NSArray *items = [[NSFileManager defaultManager] contentsOfDirectoryAtPath:path error:NULL];
在文档中,它说"如果您不想要错误信息,可以为此参数指定nil".另一方面,由于它是一个双指针,NULL似乎也有意义吗?
我是一个相对有经验的iOS开发人员,但有一件事总是困扰我,Nil(Capital)和nil(小写)和NULL(如果有的话)在性能和使用方面有什么区别?我绝对相信它们之间存在差异,否则为什么它们首先会被单独定义为......
我正在创建一个像这样的NSString,我之后是否应该发布它?
CFUUIDRef uuidObj = CFUUIDCreate(nil);
NSString *device = (NSString*)CFUUIDCreateString(nil, uuidObj);
CFRelease(uuidObj);
Run Code Online (Sandbox Code Playgroud)
谢谢!