iPhone SDK @package vs. @private vs. @public и struct

Эй, у меня действительно простой вопрос, который требует больше просто объяснения, чем отладки, но я видел в определениях интерфейса для многих объектов класса ключевые слова «@package», «@private», «@public», а затем даже более странная "структура {...}". Мне удавалось создавать полные программы, не используя ничего из вышеперечисленного, поэтому я надеялся, что кто-нибудь объяснит мне значение этих ключевых слов.

Спасибо

РЕДАКТИРОВАТЬ:
Подождите, теперь я понимаю ограничения каждого объявления, но зачем вам вообще их использовать? И можете ли вы уточнить, что означает «struct {...}» и как я его использую? Еще раз спасибо :D


person NoodleOfDeath    schedule 23.08.2010    source источник


Ответы (1)


Что касается пакета, здесь подробно дан ответ на ваш вопрос: Что Директива @package в Objective-C?

struct — это конструкция C, которая позволяет вам обращаться к нескольким типам данных под одним именем.

@private ограничивает доступ к переменным для использования только этим классом

@protected ограничивает доступ к переменным для использования только этим классом и унаследованными классами (по умолчанию в классах Obj-C)

@package ограничивает доступ к переменным для использования фреймворком

@public позволяет всем получить доступ к этой переменной

Редактировать:

struct person {         /* declares struct person */
int   age;
float weight;
char  name[25];
  } adam;

struct person joe;
joe.age = 23;        /* add values */
joe.weight = 147.8;    

Что касается ограничения, хорошей практикой объектно-ориентированного программирования является ограничение доступа к переменным, известное как инкапсуляция ://en.wikipedia.org/wiki/Encapsulation_%28объектно-ориентированное_программирование%29

person Gauloises    schedule 23.08.2010
comment
@public позволяет всем получить доступ к этой переменной (по умолчанию в классах Obj-C) @public определенно не по умолчанию - person user102008; 01.02.2011
comment
@user: Вы правы, я перечитал документ, и он действительно @protected по умолчанию - person Gauloises; 20.02.2011