Предупреждение: длинный формат определяет тип', но аргумент имеет тип 'UIWebViewNavigationType' (ака 'перечисление UIWebViewNavigationType')
Было интересно, может ли кто-то помочь мне с этим предупреждением об ошибке, которое я получаю в Xcode. Я думаю, что это как-то связано с 32 v 64bit. Я хотел бы, чтобы код работал как в 32, так и в 64 битах. Соответствующий раздел кодекса гласит:
- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType {
NSLog(@"expected:%ld, got:%ld", (long)UIWebViewNavigationTypeLinkClicked, navigationType);
NSLog(@"Main Doc URL:%@", [[request mainDocumentURL] absoluteString]);
if (navigationType == UIWebViewNavigationTypeLinkClicked) {
[[UIApplication sharedApplication] openURL:[request mainDocumentURL]];
return NO;
Большое спасибо
1 ответ:
UIWebViewNavigationType
определяется какtypedef NS_ENUM(NSInteger, UIWebViewNavigationType) { // ... };
И
NSInteger
-этоint
на 32-битных иlong
на 64-битных платформах. Поэтому вы следует привести значение кlong
NSLog(@"expected:%ld, got:%ld", (long)UIWebViewNavigationTypeLinkClicked, (long)navigationType);
Чтобы он компилировался без предупреждений (и работал корректно) во всех случаях.