Ios 抓住一个结构
在创建以下结构的方法之外,我如何挂起它?我一直在尝试将其分配给实例变量或属性,但运气不太好Ios 抓住一个结构,ios,objective-c,ios5,struct,Ios,Objective C,Ios5,Struct,在创建以下结构的方法之外,我如何挂起它?我一直在尝试将其分配给实例变量或属性,但运气不太好 @property(nonatomic) CTParagraphStyleSetting defaultParagraphSettings; - (void)someMethod { CTParagraphStyleSetting settings[] = { { kCTParagraphStyleSpecifierAlignment, sizeof(CTTextAlignmen
@property(nonatomic) CTParagraphStyleSetting defaultParagraphSettings;
- (void)someMethod {
CTParagraphStyleSetting settings[] = {
{ kCTParagraphStyleSpecifierAlignment, sizeof(CTTextAlignment), &alignment },
{ kCTParagraphStyleSpecifierLineBreakMode, sizeof(CTLineBreakMode), &lineBreakMode },
};
self.defaultParagraphSettings = settings;
}
self.defaultParagraphSettings=设置代码>生成以下错误:
Assigning to 'CTParagraphStyleSetting' (aka 'struct CTParagraphStyleSetting') from incompatible type 'CTParagraphStyleSetting [4]'
从不兼容的类型“CTParagraphStyleSetting[4]”分配到“CTParagraphStyleSetting”(也称为“struct CTParagraphStyleSetting”)
我这样做对吗?错误消息告诉您变量settings
的类型为数组CTParagraphStyleSetting
,属性defaultParagraphSettings
的类型为CTParagraphStyleSetting
。因此有两个问题,(1)类型不兼容,(2)(目标-)C不支持数组赋值
我无法告诉你如何修复它,因为这取决于你正在尝试做什么。但例如,声明:
self.defaultParagraphSettings = settings[0];
应将数组的第一个元素分配给属性。一个问题:您希望defaultParagraphSettings
的类型为CTParagraphStyleSetting*
,不是CTParagraphStyleSetting
。更糟糕的是,它会将指针分配给堆栈内存,该内存会立即超出范围,因此其内容将是未定义的。谢谢CRD。这很有帮助。我试图做的是保留设置的全部内容,而不仅仅是第一个元素。通过这种方式,我可以在以后重用它来创建CTParagraphStyleRef。但是我开始认为将设置粘贴到返回结构/数组的方法中可能更容易。-我们的目标是避免重复代码。@Matt-您有一个3字段的结构,只需在需要时创建即可-保留它们以供重复使用是非常麻烦的。如果您真的想要这些元素的“集合”,那么一个选项就是不要数组,您必须为数组编制索引,编写一个采用“索引”的方法,执行一个开关
,并返回“元素”。