我正在为一个讨厌的遗留C库构建一个Objective-C包装器。假设我有两个Objective-C类 A 和 B 包装一些相关的遗留结构。现在我想提供一个函数,将类A的给定对象转换为B类对象。问题是转换过程破坏源对象的内部状态。
实现有关标准Objective-C命名约定的转换函数的最佳解决方案是什么。即应该清楚转换函数将对给定的源对象执行 release 。
答案 0 :(得分:1)
也许您应该询问有关如何在不破坏源对象状态的情况下执行转换过程的策略,而不是询问名称。我无法想象任何类型的C数据不能仅仅memcpy
到新位置。我不知道这样做,看看在转换之前复制数据是否会为你解决这个问题。
答案 1 :(得分:0)
MyObjectB * b = [MyObjectB bFromA:(MyObjectA *)a];
或
MyObjectB * b = [[MyObjectB alloc] initFromA:(MyObjectA *)a];
我猜;)
答案 2 :(得分:0)
没有这样的命名约定。我在标准API中看到的所有Objective-C方法/函数要么复制它们的源,保留原始源,要么使用原始,但不要销毁它。
确实存在的命名约定会持续到调用者是否应该释放 new 对象。