我正在开发一个 IOS 应用程序。此应用程序连接服务器并获取每个表的所有行。我的应用程序的一些代码如下;
for(NSString* tableName in dtTables)
{
long PageCount=2000;
long rowCount=0;
long currCount=0;
.
.
rowCount= [(NSNumber*)[row objectAtIndex:0] longValue]; // count row in the table
while (currCount<rowCount)
{
long Next=MIN(PageCount,rowCount-currCount);
SkylightQuery* query = [ServerQueryGenerator GenerateSelect:tableName :nil :nil :nil :nil :false :nil];
query.LimitBegin=currCount;
query.LimitLenght= Next;
NSMutableDictionary* table = [[ServerDatabase SI] Select:query];
.
.
currCount +=Next;
} // while
}//for
在类Select
方法中ServerDatabase
,我将序列化 Skylight 查询变量中的请求发送到服务器。Command
变量包含一个包含序列化服务器请求的字符串。
NSURLRequest *Request = [NSURLRequest requestWithURL:[NSURL URLWithString:[command stringByAddingPercentEscapesUsingEncoding: NSUTF8StringEncoding]] cachePolicy:NSURLRequestReloadIgnoringLocalCacheData timeoutInterval:30];
NSURLResponse *Response = nil;
NSError *err = nil;
NSData *response = [NSURLConnection sendSynchronousRequest: Request returningResponse: &Response error: &err];
服务器中有 70 个表。有些表有 100 条记录,有些表有 10000 条记录。因此,到 2000 年,我将在每个表中获取 2000 年的数据。
我在这里遇到了两个问题。
- 在获得一些表数据(5000 行表等)后,程序会多次导致 memrv 警告并退出。
- 从服务器获取 2000 行表太慢了。有时需要 1 分钟。
我该如何管理或解决这些问题?有什么建议吗?