Вы не разместили свой запрос, но, основываясь только на том, как он строится с динамическим списком параметров и большим количеством параметров, я собираюсь сделать предположение и сказать, что он имеет какое-то отношение к параметру sniffing - см .:
Основной идеей проблемы является создание оптимального плана выполнения запроса для определенного набора параметров, что очень мало оптимально для другого набора.
Существует несколько способов обойти проблемы с параметрами нюхания (к счастью, многие из них открылись в SQL Server 2008).
Вы могли:
WITH RECOMPILE
к вашему сохраненному proc / option (recompile)
в ваш запрос optimize for unknown
/ option (optimize for...
к вашему proc / query Обычно, необходимо только подключить вещи к делегату приложения если они:
Для всего остального, необходимо создать одиночный элемент, который управляет доступом к ним.
Jason Coco предложил направить через Контроллер Приложения. В моих программах я обычно избегаю этого, поскольку я думаю, что это помещает слишком много ответственности в верхний уровень - я думаю, что вещи должны самосправиться, где возможный и что высокоуровневое управление должно только использоваться, когда существует требование для координации между модулями однорангового уровня.
я не иду, связывают мой собственный блог, но если Вы Google меня и одиночные элементы, Вы, вероятно, найдете сообщение, которое я записал вдаванию в большее количество подробностей.
Матовый немного слишком скромно. Его регистрация на предмете является одним из лучших, которые я считал, и заслуживает ссылки. http://cocoawithlove.com/2008/11/singletons-appdelegates-and-top-level.html
Я не вижу проблемы с Вашим подходом. Я обычно использую одиночный элемент для обработки этой ситуации:
// MyCommon.h:
@interface MyCommon
class MyCommon : NSObject
{
int user;
};
@property(assign) int user;
+ (MyCommon *)singleton;
@end
// MyCommon.m:
@implementation MyCommon
static MyCommon * MyCommon_Singleton = nil;
+ (MyCommon *)singleton
{
if (nil == MyCommon_Singleton)
{
MyCommon_Singleton = [[MyCommon_Singleton alloc] init];
}
return MyCommon_Singleton;
}
@end
MyCommon
одиночный элемент тогда используется где угодно в моем приложении следующим образом:
int user = [MyCommon singleton].user;
Обычно Вы просили бы у контроллера своего приложения эту информацию, и это будет ответственно за знание, как сохранить его, это в любой модели данных существует. Контроллер Вашего приложения может или не может совпасть с делегатом приложений (в большинстве простых приложений, это - то же).