Где объявить глобальную переменную?в .ч или.м? - PullRequest
0 голосов
/ 23 декабря 2010

Какая разница между объявлением переменной в .m файле ниже @implementation и в .h fie в @interface ??

@implementation PiechartViewController
NSMutableArray *impIDs;

Я заметил, что если я создаю 3 объекта piechartViewController, новый объект перезаписывает данные предыдущего объекта, т.е. значения 3 различных объекта имеют то же значение, что и последний экземпляр объекта.

вместо этого, если бы я пошел по этому пути

в файле ".h"

@interface PiechartViewController : UIViewController {
    NSMutableArray * impIDs;

Код работает правильно. Значения impIDs имеют 3 различных значения.

1 Ответ

2 голосов
/ 23 декабря 2010

Во-первых, имена классов начинаются с заглавных букв, а переменные экземпляра начинаются со строчных букв.Это соглашение.

@implementation PiechartViewController
NSMutableArray *impIDs;

В приведенном выше примере impIDs - это переменная, определенная в области видимости файла, содержащего этот код.Хотя это глобальный, более или менее, вы не сможете получить к нему доступ из других файлов, не объявив его где-то видимым для них (что-то вроде extern NSMutableArray *impIDs).

@interface PiechartViewController : UIViewController {
    NSMutableArray * impIDs;

Здесь,impIDs является переменной экземпляра, и, таким образом, каждый экземпляр будет иметь хранилище для своего собственного изолированного бита данных, доступного в слоте переменной экземпляра impIDs.

Я бы предложил прочитать это .

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