小编NGL*_*GLN的帖子

滚动性能和UIImage绘图

我正在构建一个类似于iPod.app的专辑浏览视图的UITableView:

IMG_2316.PNG

我是在首次推出时从iPod库导入所有艺术家和专辑作品.将所有内容保存到CoreData并将其恢复为NSFetchedResultsController.我正在重用单元格标识符,在我的cellForRowAtIndexPath:方法中我有这个代码:

Artist *artist = [fetchedResultsController objectAtIndexPath:indexPath];
NSString *identifier = @"bigCell";

SWArtistViewCell *cell = (SWArtistViewCell*)[tableView dequeueReusableCellWithIdentifier:identifier];

if (cell == nil)
    cell = [[[SWArtistViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:identifier] autorelease];

cell.artistName = artist.artist_name;
cell.artworkImage = [UIImage imageWithData:artist.image];

[cell setNeedsDisplay];

return cell;
Run Code Online (Sandbox Code Playgroud)

我的SWArtistViewCell单元格实现了drawRect:绘制字符串和图像的方法:

[artworkImage drawInRect:CGRectMake(0,1,44,44)]
[artistName drawAtPoint:CGPointMake(54, 13) forWidth:200 withFont:[UIFont boldSystemFontOfSize:20] lineBreakMode:UILineBreakModeClip];
Run Code Online (Sandbox Code Playgroud)

滚动仍然不稳定,我只是无法弄清楚原因.像iPod和Twitter这样的应用程序有黄油平滑滚动,但他们都像我一样在单元格中绘制一些小图像.

我的所有观点都是不透明的.我错过了什么?

编辑:这是Shark所说的:

替代文字

我不熟悉鲨鱼.任何指针与这些符号有什么关系?当我看到这些的痕迹时,它们都指向我的drawRect:方法,特别是UIImage绘图.

替代文字

如果扼杀是文件读取,它会指向别的东西吗?这绝对是绘画吗?

编辑:保留图像

我已经按照pothibo的建议完成了,并将一个artworkImage方法添加到我的Artist类中,该类保留了使用imageWithData创建的图像:

- (UIImage*)artworkImage {
    if(artworkImage == nil)
        artworkImage = [[UIImage imageWithData:self.image] retain];

    return artworkImage;
}
Run Code Online (Sandbox Code Playgroud)

所以现在我可以直接将保留的图像设置为我的TableViewCell,如下所示:

cell.artworkImage = artist.artworkImage;
Run Code Online (Sandbox Code Playgroud)

我还在我的tableViewCell类的setArtworkImage:方法中设置了setNeedsDisplay.滚动仍然是滞后的,Shark显示完全相同的结果.

iphone performance scroll image uitableview

4
推荐指数
1
解决办法
2910
查看次数

在SQL查询中循环

基本上我想id从表中提取并id在另一个表中插入一些其他数据.所以algorythm:

foreach id in (select id from table)
{
    insert into table2 values (id,etc,etc);
}
Run Code Online (Sandbox Code Playgroud)

如何使用SQL查询执行此功能?

sql

4
推荐指数
1
解决办法
7407
查看次数

如何使用TADOQuery Component Only将图像插入数据库

我有一个简单的基本问题,我试图使用Insert语句将数据插入到数据库中,其他列值也使用TADOQuery组件.

由于代码已经由某人编写,我想在此处提供一些虚拟示例代码,以便您通过相应的步骤进行说明.

请注意,这是工作的罚款与TQuery组件,因为我更换TQueryTADOQuery组件,我必须做同样的使用TADOQuery唯一的组件.

相同的代码应该适用于SQL Server以及Oracle数据库.

我尝试插入图像的列的数据类型VarBinary是SQL Server数据库中的类型.

使用TQuery将图像插入表中

  1. 使用创建图像TImage.

    msBinImgStream := TMemoryStream.Create; 
    imgCustom := TImage.Create(self); 
    imgJpg := TJPEGImage.Create; 
    
    Run Code Online (Sandbox Code Playgroud)
  2. 将图像转换为TJpegImage并保存到TMemoryStream.

    imgJpg.Assign(imgCustom.Picture.Bitmap); 
    imgJpg.SaveToStream(msBinImgStream);
    
    Run Code Online (Sandbox Code Playgroud)
  3. 使用组件的SetBlobdata属性插入数据库TQuery.

    sSql := 'INSERT INTO Table_Name(Column1, Column2, Column_Image) VALUES ( ''' + Value1 + ''', ''' + Value2 + ''', :pBlob)'; 
    qryTQuery.SQL.Add(sSQL); 
    qryTQuery.ParamByName('pBlob').SetBlobData(msBinImgStream.Memory, msBinImgStream.Size); 
    qryTQuery.ExecSQL; 
    
    Run Code Online (Sandbox Code Playgroud)

现在做同样的事情TADOQuery:

  1. 能够创建图像.
  2. 将其转换为TJpeg并保存到TMemoryStream.
  3. 尝试使用图像将图像插入数据库LoadFromStream(stream, ftBlob) …

delphi

4
推荐指数
1
解决办法
2万
查看次数

Delphi链接器和C++链接器之间的区别

我来自Delphi世界,静态导入DLL函数非常简单.您需要做的就是指定函数名称和模块,如下所示:

function GetTickCount : DWORD; stdcall; external 'Kernel32.dll';
Run Code Online (Sandbox Code Playgroud)

为什么在C++中必须使用kernel32.lib才能导入函数?为什么我不能简单地告诉链接器像Delphi一样导入该函数?

我知道这对你们的manny来说听起来很无聊,但是从Delphi进入C++世界真的会让人感到困惑.

c++ delphi static-linking

4
推荐指数
1
解决办法
646
查看次数

4
推荐指数
1
解决办法
5087
查看次数

"使用调试DCU"的编译器选项?

在我写的一个组件中,我想包括自动检测已注册的图像格式,但它是一个只有在禁用Use Debug DCU的编译器选项时才有效的解决方案.

真正想知道的是这个解决方案的替代方案,它不涉及编译器选项依赖.

但就目前而言,我只想知道如何在运行时检查是否设置了Use Debug DCU的编译器选项.

delphi compiler-options

4
推荐指数
1
解决办法
2753
查看次数

代码完成不会列出消息处理程序

在Delphi XE2中处理旧项目时,弹出的代码完成窗口CTRL- SPACE不会列出像Delphi 7这样的消息处理程序:

屏幕截图

在上面的屏幕截图中,WM***缺少例程.这是为什么?

delphi code-completion delphi-xe2

4
推荐指数
1
解决办法
241
查看次数

将画布保存为图像

我正在使用Delphi XE2编写程序.我在画布上画了一些线条和形状.我想使用保存对话框将Canvas保存为图像文件.

所以我在表单上有一个保存按钮,通过单击它,它会打开保存对话框.我该如何继续保存画布?

delphi delphi-xe2

4
推荐指数
2
解决办法
1万
查看次数

如何在Android设备上阅读UDID,Major,Minor of beacon?

我正在尝试为Android开发BLE应用程序.

我可以通过哪种方式检测和读取Android设备上的信标的UDID,Major,Minor?

我已经阅读了RadiusNetworks android-ibeacon-service,但我无法理解为什么:

major = (256 * (0xFF & paramArrayOfByte[(i + 20)]) +
 (0xFF & paramArrayOfByte[(i + 21)]));
Run Code Online (Sandbox Code Playgroud)

paramArrayOfByteLeScanCallback byte[] scanRecord

android bluetooth-lowenergy ibeacon

4
推荐指数
2
解决办法
7527
查看次数

在与类同名的PHP类中,初始函数的用途是什么?

我开始使用OO PHP,在查看了我从互联网上下载的各种类之后,我注意到这些类中的一些 - 但不是全部 - 具有相同名称的初始函数,例如

class MyClass{

function MyClass{

//function contents in here

}

function otherfunction{

//more stuff here

}

}
Run Code Online (Sandbox Code Playgroud)

这个初始功能是什么?它如何帮助编写课程?

php oop class function

3
推荐指数
1
解决办法
174
查看次数