Mix C и Objective-C Управление памятью

Zhigang An спросил: 07 октября 2018 в 10:43 в: objective-c

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 block?

2.Просмотрите этот фрагмент кода:

- (void)someMethod
{
    NSNumber *num[2] = {@1, @2};
    ...
}

Для управления памятью что-нибудь нужно сделать для NSObject C массив, или ARC будет делать правильные вещи? Или в любом случае ARC не будет работать при смешивании C и Objective-C?

0 ответов