我已經看過一些以前的答案,在這裏提到了一個類似的問題,但我仍然不明白。Objective-C(null)和nil之間的區別
下面是代碼(從ShareKit)
if (isDismissingView)
return;
NSLog(@"presentingViewController: %@", [self.currentView presentedViewController]);
if (self.currentView != nil)
{
// Dismiss the modal view
if ([self.currentView parentViewController] != nil)
{
self.isDismissingView = YES;
[[self.currentView parentViewController] dismissModalViewControllerAnimated:animated];
}
// for iOS5
else if ([self.currentView respondsToSelector:@selector(presentingViewController)] && [self.currentView presentingViewController]) {
//****** it executes this block ******
self.isDismissingView = YES;
[[self.currentView presentingViewController] dismissViewControllerAnimated:animated completion:^{ ... }
}
else
self.currentView = nil;
}
在NSLog的,其結果是(null)
,這顯然是不一樣的零,因爲它測試,如果它不是零
else if ([self.currentView respondsToSelector:@selector(presentingViewController)] && [self.currentView presentingViewController])
被執行。
所以我有三個問題。什麼是(null)
?對象或指針如何變爲(null)
?測試這種情況的正確方法是什麼?
您是否嘗試過Cmd +單擊null和nil來查看它們的定義?也可能重複[NULL vs零在Objective-C](http://stackoverflow.com/questions/557582/null-vs-nil-in-objective-c) – CodaFi
我沒有看到這是一個重複的,因爲那個問題,我看過,是指'NULL',而不是'(null)'。 – Jim
如果我告訴你他們是同一件事,你會相信我嗎? ;) – CodaFi