有人可以解释为什么在以下过程中生成的代码与Xcode3不同?代码是否更好或可能是错误?
我使用Core Data自定义托管类,这是我在Xcode3中遵循的过程:
>转到模型编辑器
>选择要生成源代码的实体
>转到file-> New->新建文件
>选择managedobject类(或者是什么,我不能再打开xcode3来验证)
>选择要生成的实体(步骤2中先前选定的实体已被检查)
>单击完成
现在,在Xcode4中,我认为这是怎么做的,但我不确定,因为它生成不同的代码:
>转到模型编辑器
>选择实体
>转到file-> New-> New file
>选择“NSManagedobject子类”
>选择位置并创建.
它产生的代码是不同的,原因如下:
>在实体中添加和删除集合成员的生成代码不再在@interface中声明,而是@implementation.这导致代码感觉失败检测这些方法.
>添加和删除对象的生成代码现在已经完全定义,不再使用CoreDataGeneratedAccessors进行自动生成
例如,Xcode3将在header文件中生成此代码:
@interface SampleEntity (CoreDataGeneratedAccessors)- (voID)addChildobject:(Child *)value;- (voID)removeChildobject:(Child *)value;- (voID)addChild:(NSSet *)value;- (voID)removeChild:(NSSet *)value;@end
现在,Xcode4在IMPLEMENTATION文件中生成此代码:
@implementation SampleEntity@dynamic children;- (voID)addChildobject:(Child *)value { NSSet *changedobjects = [[NSSet alloc] initWithObjects:&value count:1]; [self willChangeValueForKey:@"children" withSetMutation:NSkeyvalueUnionSetMutation usingObjects:changedobjects]; [[self primitiveValueForKey:@"children"] addobject:value]; [self dIDChangeValueForKey:@"children" withSetMutation:NSkeyvalueUnionSetMutation usingObjects:changedobjects]; [changedobjects release];}
有人可以衡量为什么这不同吗? Xcode4代码感觉不喜欢这种生成NSManagedobject子类的新方式.
解决方法 简短的答案:不要使用Xcode的代码生成.使用发电机,享受更轻松的生活.至于为什么,很难说.我从来不是Xcode生成Core Data子类的方式的粉丝,不会推荐它们.我们可以猜测为什么他们做了他们做的事情,但是基于Xcode4和Core Data的其他问题,我会把它粉碎成“未准备好”或“未完全测试”.
如果您想继续使用Xcode代码生成器,请提供雷达.
总结以上是内存溢出为你收集整理的iphone – Xcode4:为自定义核心数据管理对象生成不同的代码全部内容,希望文章能够帮你解决iphone – Xcode4:为自定义核心数据管理对象生成不同的代码所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)