2014-08-28 3 views
0

Я хочу объявить переменные в объекте-c, которые доступны во всем экземпляре экземпляра класса, но недоступны вне области действия этого класса. Я делал мой код, как показано ниже:Переменные уровня класса передовой практики

@interface myClass 
{ 
NSString* classVariable; 
} 
@end 

@implementation myClass 

-(void)method 
{ 
NSLog(@"%@",classVariable); 
} 

@end 

Это, казалось бы, работает в коде, но я новичок в Objective-C (исходя из Java и C#). Это лучшая практика? Есть ли подводные камни?

Заранее благодарен!

+0

Просто используйте свойства, и вы хороши! – CrimsonChris

+0

@CrimsonChris Спасибо. Есть ли какие-либо подводные камни для метода, который я сейчас использую? Я знаю, что свойства видны вне класса, чего я бы хотел избежать. – steventnorris

+0

Они видны только вне класса, если вы поместите их в файл заголовка. Поместите их в класс _ класса прямо над реализацией вашего класса. – CrimsonChris

ответ

1

Многие скажут вам использовать свойства, но иногда вы просто хотите экземпляр переменной которая является частным (который просто означает, что труднее получить доступ в Objective-C, который не имеет реального контроля доступа). Если это ваш случай, язык Objective-C получил возможность объявлять переменные экземпляра в реализации не так давно, чтобы удовлетворить ваши потребности. Измените свой код на:

@interface myClass 
@end 

@implementation myClass 
{ 
    NSString* classVariable; 
} 

-(void)method 
{ 
    NSLog(@"%@",classVariable); 
} 

@end 

Переменные экземпляра, указанные таким образом, так же скрыты, как и Objective-C.

Смежные вопросы