Каковы свойства переменной в target-c, объявленной над @interface в файле * .h? (образец прилагается) - PullRequest
1 голос
/ 08 декабря 2011

Я видел следующее в некотором коде (см. Ниже).Не сталкивался с концепцией переменной, объявленной над @interface.Какова концепция здесь?/ Каковы свойства этой переменной и как ее можно использовать?

#import <Foundation/Foundation.h>

NSMutableArray* testArray;  // <=== HERE

@interface MyClass : NSObject {
}
@end

Ответы [ 3 ]

5 голосов
/ 08 декабря 2011

Это глобальная переменная, доступ к которой можно получить везде.

1 голос
/ 08 декабря 2011

Если переменная объявлена ​​в фигурных скобках @interface, то это переменная instance, которая будет существовать для каждого экземпляра класса.

Если переменная объявлена ​​ за пределами фигурных скобок @interface, таких как та, которую вы видите здесь, то это просто переменная, к которой можно получить доступ из любого файла в вашей программе (при условии, что она * 1008) * Это .h файл.

Итак, в любом месте вашей программы вы можете сделать: [testArray addObject:foo] или что угодно.

Это особенность Objective-C, которая используется редко. На самом деле он никогда не используется большинством разработчиков. Но он должен существовать для совместимости с кодом C / C ++. Возможно, это было сделано для (небольшого) повышения производительности, но обычно это то, что вам никогда не следует делать.

1 голос
/ 08 декабря 2011

Objective C является надмножеством простого ANSI C. Вещи вне интерфейса Objective C и его реализации являются объявлениями C или кодом. В этом случае глобальная переменная C-указателя. Полезно, если вам нужен способ для любой функции C (или любого метода в любом классе) получить доступ к этому NSArray, не передавая его в качестве параметра.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...