我在此代码中遇到了“尝试将nil插入数组”的消息。
if (bookingID) {
SBRequest *request = [[SBSession defaultSession] editBooking:bookingData callback:callbak];
[pendingRequests addObject:request.requestID];
[[SBSession defaultSession] performReqeust:request];
}
else {
SBRequest *request = [[SBSession defaultSession] book:sbookingData callback:callbak];
[pendingRequests addObject:request.requestID];
[[SBSession defaultSession] performReqeust:request];
}
第4行(performRequest:
方法内部)发生崩溃。这意味着request
参数为nil
。但这也意味着崩溃应该发生在第3行,因为requestID
也应该是nil
。我使用过调试器并看到了这张图片:
看起来我有两个request
个变量,其中一个是nil
。我通过在if / else作用域中重命名变量来解决问题。因此,在某些原因,编译器会在'if'和'else'范围内创建变量。并且在某些时候使用'if'范围内的'else'范围内的变量。
这是编译器的错误吗?变量范围如何在Objective-C中起作用?
Xcode版本7.1.1(7B1005)。我使用编译器的默认配置(Apple LLVM 7.0)。除语言方言GNU99外没有自定义编译器标志。