1.
Учитывая следующий код:
void make_objc_array()
{
NSArray *array = [NSArray arrayWithObjects:@1, @2, nil];
NSLog(@"%@", array.lastObject);
}
void make_objc_dictionary()
{
NSDictionary *dictionary = [NSDictionary dictionaryWithObjectsAndKeys:@1, @"1", @2, @"2", nil];
NSLog(@"%@", dictionary[@"2"]);
}
int main(int argc, const char * argv[])
{
@autoreleasepool {
make_objc_array();
}
make_objc_dictionary();
return 0;
}
Не вызывает ли make_objc_dictionary();
вызов функции утечки NSDictionary
объекта, поскольку он находится вне блока @autorelease
?
2.
Рассмотрим этот фрагмент кода:
- (void)someMethod
{
NSNumber *num[2] = {@1, @2};
...
}
Для управления памятью, что мне нужно сделать для массива NSObject
C, или ARC сделает правильные вещи? Или в любом случае ARC не будет работать при смешивании C и Objective-C?