尝试使用%@为int构建字符串时的EXC_BAD_ACCESS

Nor*_*ert 17 exc-bad-access objective-c

为了在Core Data中使用,我尝试构建一个NSPredicate对象.minLength并且maxLength是类型int:

 NSPredicate *predicate = [NSPredicate predicateWithFormat:@"length >= %@ AND length <= %@",
                          minLength, maxLength];
Run Code Online (Sandbox Code Playgroud)

程序在这里崩溃了EXC_BAD_ACCESS.如果我使用%d而不是%@:

 NSPredicate *predicate = [NSPredicate predicateWithFormat:@"length >= %d AND length <= %d",
                          minLength, maxLength];
Run Code Online (Sandbox Code Playgroud)

我在这里错过了什么?

alb*_*amg 49

%@是对象的格式说明符.一个int不是一个对象.有符号整数的格式说明符是%d%i.


MBy*_*ByD 5

在int的格式中,你不应该使用%@,但是%i.%@是为了对象.