Xcode を 4.4.1 に更新すると、RestKit ライブラリの使用に対して 22 の警告が表示されます。エラーは次のようでした。
Direct access to objective-c's isa is deprecated in favor of object_setClass() and object_getClass()
以下を置き換えて、18個の警告を修正しました。
%lu
と置き換えます%u
object->isa
と置き換えますobject_getClass(object)
keyObject->isa
と置き換えますobject_getClass(keyObject)
修正できない警告が 4 つ以上あります。以下に警告とその説明を示します。
ファイル名 1: RKManagedObjectMappingOperation.m 警告 Line1:
NSAssert(mapping, @"Attempted to connect relationship for keyPath '%@' without a relationship mapping defined.");
警告の説明 1:
more '%' conversations than data arguments
ファイル名 2: RKReachabilityObserver.m 警告行 2:
return [NSString stringWithFormat:@"<%@: %p host=%@ isReachabilityDetermined=%@ isMonitoringLocalWiFi=%d reachabilityFlags=%@>",
NSStringFromClass([self class]), self, self.host, self.isReachabilityDetermined ? @"YES" : @"NO",
self.isMonitoringLocalWiFi ? @"YES" : @"NO", [self reachabilityFlagsDescription]];
警告の説明 2:
format specifies type int but the argument has type NSString
ファイル名 3: JSONKit.m 警告行 3:
if(JK_EXPECT_F(((id)keys[idx])->isa != encodeState->fastClassLookup.stringClass) && JK_EXPECT_F([(id)keys[idx] isKindOfClass:[NSString class]] == NO)) { jk_encode_error(encodeState, @"Key must be a string object."); return(1); }
警告の説明 3:
Direct access to objective-c's isa is deprecated in favor of object_setClass() and object_getClass()
ファイル名 4: NSManagedObject+ActiveRecord.m 警告行 4:
RKLogError(@"Property '%@' not found in %@ properties for %@", propertyName, [propDict count], NSStringFromClass(self));
警告の説明 4:
format specifies type id but the argument has type NSUInteger
修正方法は?