Используйте этот статус. ссылка: https://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html
SELECT * FROM TABLE_shares WHERE DATE_SHARE > DATE_SUB(NOW(), INTERVAL 7 DAY)
Если Вы делаете myArr=nil;
отдельно, затем Вы потеряли указатель, к которому можно отправить release
сообщение к. Нет никакого волшебства к release
Ваш объект.
И, как Georg говорит, не имея возможности выпустить Ваш объект, та память 'просочилась'.
Вы могли использовать свойство и получить почти синтаксис, который Вы хотите без утечки памяти.
Используйте этот синтаксис для объявления массива
@property (readwrite, retain) NSMutableArray *myArray;
Затем повторно инициализируйте его как это:
[self setMyArray:[NSMutableArray array]];
Если бы Вы были на Mac OS, то не iPhone OS я сказал бы, что это зависит от того, активируется ли сборщик "мусора" или нет:
myArr = nil;
[myArr release];
К сожалению, на iPhone, нет никакой сборки "мусора", поэтому если Вы не хотите утечки памяти, необходимо выпустить объект, после того как Вам больше не нужен он.
Один способ осознать различие мог бы быть этим: Установка ссылки на объект к нолю ничего не делает к объекту, это только делает что-то к ссылке.
"Выпуск объекта" является "ничем", таким образом, он не делает этого.:) На собравшем "мусор" языке это могло бы сделать это как побочный эффект отбрасывания ссылки, но в Objective C это не прокладывает себе путь.
Если то, что Вы хотите, должно сбросить содержание NSMutableArray/NSMutableDictionary, можно также назвать removeAllObjects, и у Вас есть новый array/dict для работы с.
Первый блок кода в порядке. Однако второй блок не оставляет вас с массивом, который вы можете использовать, поэтому его недостаточно. Половину исправляя этот блок, я думаю, вы имеете в виду:
myArr = nil;
myArr = [[NSMutableArray alloc] init....];
Однако это не дает того, чего вы хотите, потому что вы не выпускаете myArr. Если вы синтезировали сеттер для myArr, то вы можете получить желаемое поведение выпуска, установив значение nil, используя сеттер (self.myArr) вместо прямого доступа к указателю (myArr). Полное исправление вашего второго блока:
self.myArr = nil;
myArr = [[NSMutableArray alloc] init....];
Теперь у нас есть эквивалентные примеры кода, один использует сеттер с nil для выпуска, а другой нет. Они такие же.
Если myArr - изменяемый массив, как в этих примерах, наиболее эффективный метод - использовать removeAllObjects, избегая всей работы по освобождению памяти только для ее возврата:
[myArr removeAllObjects];