1126 Еще нет. В Neo4j 2.0 было введено более удобное для шифрования индексирование, и вы можете выполнить некоторые команды DDL для создания и удаления индексов и ограничений, но по состоянию на 2.01 это все (см. документы ). В 1.9 вы вообще не можете определить этот тип схемы с шифром.
-
Существует множество способов выхода за пределы шифра, например,
В neo4j-shell
вы можете
index --indexes
schema
schema ls -l :YourLabel
В neo4j-browser
вы можете
:schema
:schema ls -l :YourLabel
Большинство API, которые позволяют выполнять запросы шифрования также предоставит способы запроса схемы, такие как
GraphDatabaseService.schema().getConstraints()
и .getIndexes()
для схемы меток GraphDatabaseService.index().nodeIndexNames()
и .relationshipIndexNames()
для унаследованных индексов /db/data/schema/
для схемы на основе меток /db/data/index/node/
и /db/data/index/relationship/
для унаследованных индексы Если это объект, вы используете нотацию указателя. Все типы c (int, BOOL, long и т. Д.) Не являются объектами, поэтому вы используете указатель только в том случае, если вам нужен указатель на их место в памяти:
NSObject *obj;
UIView<Protocol> *obj;
int integerVar;
BOOL isTrue;
Особый случай - id
, который сам по себе является указателем на объект, поэтому вам не нужен *
:
id obj;
Немного сложно:
NSInteger int;
NSNumber *number;
NSInteger - это соответствующий тип int для платформы, тогда как NSNumber - это объект, который может содержать int, float или что у вас есть.
Каждый класс Objective-C, такой как NSString, NSObject, NSView и т. Д., Должен быть указателем, за исключением нескольких специальных типов, таких как NSUInteger, который, как мне кажется, является просто определением типа для int.
NSString *stringyString = @"THIS STRING IS STRINGY!!!11";
NSOpenPanel *openPanel;
NSObject *objectyObject;
NSUInteger integeryInteger = 7;
Единственное, чего не будет - это id, потому что это указатель на любой объект.
id pointerThatCanBeSetToAnyObject = [NSString stringWithString:@"HEYYYY"];
Только типы переменных C, такие как int, float, BOOL и т. Д., Не требуют указателя, за исключением строк C, таких как char массивы.
int SEVEN = 7;
float SIXPOINTTWO = 6.2;
char *characterArray = "HEYYYYY";
Наконец, классы CoreFoundation имеют своего рода гибрид; многие классы будут указателями, но для некоторых классов, таких как CFString, CFStringRef уже будет указателем. Многие функции CFString возвращаются как CFStringRef. CFString * и CFStringRef взаимозаменяемы с NSString * (это называется бесплатным мостом), хотя компилятор, вероятно, оценит это, если вы сначала примените его.
CFString *veryStringyString = @"STRINGYNESS!!11!one";
CFStringRef especiallyStringyString = @"STRRRRRRINNNNNGGGGYYYYY";
NSString *STRINGYNESS = (NSString *)veryStringyString;
Указатели используются для хранения адреса выделенной памяти. Когда вы создаете объект в какао, вы выделяете память и сохраняете адрес в указателе.
BOOL, char, int сохраняют значение.
Когда вы создаете класс, он выделяет память, поэтому вам нужно сохранить указатель на эту память чтобы получить к нему доступ:
NSMutableArray * arr = [[NSMutableArray alloc] init];
Как типы C очищаются из памяти?
«Простые» типы размещаются в стеке. Когда вызывается метод, в стеке выделяется пространство для хранения всех переменных метода (плюс некоторые другие вещи, такие как параметры, адрес возврата и т. Д.). Так что стек растет. Как только метод возвращает, стек сжимается, и пространство, которое использовалось методом, теперь освобождается - так что да, простые типы будут «очищены».
На самом деле это намного проще, чем кажется. Загляните в статью о стеке в википедии - раздел Аппаратные стеки для получения дополнительных сведений, чтобы удовлетворить ваше любопытство.
Когда вы «выделяете память», эта память выделяется в куче. Куча существует для всего выполнения вашего приложения. Как только вы выделяете память в куче, вы получаете адрес этой памяти - вы сохраняете этот адрес в указателях. Указатель - это просто переменная, которая хранит адрес памяти.
Когда ваш метод возвращает, у вас больше нет доступа к вашим «простым» переменным, объявленным внутри метода (например, BOOL, int, char и т. Д.), Но память в куче все еще там . Если у вас все еще есть адрес памяти (например, указатель), вы можете получить к ней доступ.
А как насчет переменных экземпляра «простого» типа (редактировать: внутри объекта?)?
Когда вы создаете объект (мы говоря об объекте C и какао здесь) и выделяя его, вы выделяете пространство для всего объекта. Размер объекта - это размер всего этого » s (не уверен, что obj-c добавляет что-то еще). Таким образом, переменные экземпляра являются частью вашей объектной памяти в куче. Когда вы освобождаете / удаляете объект, его память освобождается, и у вас больше нет доступа к переменным, которые хранятся внутри объекта (в obj-c вы вызываете release, каждый объект сохраняет счетчик ссылок, когда счетчик ссылок достигает 0, объект освобождается - освобождается память в куче).