繁体   English   中英

在iPad 1上崩溃但不是> iPad 1

[英]sizeof crashing on iPad 1 but not > iPad 1

考虑以下代码:

CGFloat largerLineSpacing = kStreamCellParagraphSpacing;

CTParagraphStyleSetting paragraphSettings[1] = {
    { kCTParagraphStyleSpecifierParagraphSpacing, sizeof(CGFloat), &largerLineSpacing }
};
CTParagraphStyleRef paragraphStyle = CTParagraphStyleCreate(paragraphSettings, sizeof(*paragraphSettings));

在iPad 1(5.1)上运行时,此代码与EXC_BAD_ACCESS崩溃,但不是5.1模拟器或iPad 3(6.0)。 我的C很弱 - 我是否因为sizeof而犯了一个愚蠢的错误?

CTParagraphStyleCreate的文档表明它的第二个参数给出了paragraphSettings数组中的CTParagraphStyleSetting实例的数量(在你的例子中为1),而不是数组的字节大小。

如果您将代码更改为

CTParagraphStyleRef paragraphStyle = CTParagraphStyleCreate(paragraphSettings, 1);

它应该工作。 或者,如果您想要应对将来添加更多设置,您可以尝试

int numElems = sizeof(paragraphSettings)/sizeof(paragraphSettings[0]);
CTParagraphStyleRef paragraphStyle = CTParagraphStyleCreate(paragraphSettings,
                                                            numElems);

static CFIndex const settingCount = 1;

CTParagraphStyleSetting paragraphSettings[settingCount] = {
    { kCTParagraphStyleSpecifierParagraphSpacing, sizeof(CGFloat), &largerLineSpacing }
};

CTParagraphStyleRef paragraphStyle = CTParagraphStyleCreate(paragraphSettings, settingCount);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM