使用块在方法中定义私有方法而不是使用真正的私有方法有什么缺点?除了无法从其他地方调用该方法之外还有什么吗?
例:
-(NSDictionary*)serialize
{
NSMutableDictionary* serialization = [NSMutableDictionary dictionary];
TwoArgumentsBlockType serializeItemBlock = ^void(MyItemClass* item, NSString* identifier)
{
if (item)
{
// serialization code
}
};
serializeItemBlock(self.someItem1, kSomeIdentifier1);
serializeItemBlock(self.someItem2, kSomeIdentifier2);
serializeItemBlock(self.someItem3, kSomeIdentifier3);
serializeItemBlock(self.someItem4, kSomeIdentifier4);
serializeItemBlock(self.someItem5, kSomeIdentifier5);
serializeItemBlock(self.someItem6, kSomeIdentifier6);
serializeItemBlock(self.someItem7, kSomeIdentifier7);
serializeItemBlock(self.someItem8, kSomeIdentifier8);
serializeItemBlock(self.someItem9, kSomeIdentifier9);
serializeItemBlock(self.someItem10, kSomeIdentifier10);
serializeItemBlock(self.someItem11, kSomeIdentifier11);
return serialization;
}
Run Code Online (Sandbox Code Playgroud) 我的代码片段:
void
RMWavefrontFileImporter::loadVertexIntoVector(
const std::vector<std:string> lineElements,
std::vector<const RM3DVertex>* vertices)
{
assert(vertices);
std::unique_ptr<const RM3DVertex> verticeRef = verticeWithElements(lineElements);
const RM3DVertex* vertex = vertexRef.get();
assert(vertex);
vertices->push_back(*vertex);
}
Run Code Online (Sandbox Code Playgroud)
我收到的错误消息:
无法使用类型为'const RM3DVertice*'的左值初始化'void*'类型的参数
我没有看到问题.有什么明显我想念的吗?