1
2
我认为方法3是最好的方法。当你包装一个库的时候,你会想在任何对象或结构周围创建包装器,用户需要处理。
如果你把所有的东西都包装起来,那么你就可以自由地在以后更改类的内部工作方式,而不影响用户已经习惯的接口。例如,将来您可能会意识到您希望添加某种类型的错误检查或更正…也许是设定一个
|
2
2
我坚持3号进近。你在“传递一个结构” 现在 ,但流对象将来可能会扩展得更多。你说速度不是问题,所以我想内存消耗也不是问题,否则你还是要坚持C。 |
3
1
我的回答不是你所问的,但仍然是我如何“处理这种情况”。 我要问的第一个问题是,“这个包装器增加了什么值?”如果答案是“使用objective-c语法”,那么答案是“不要改变任何东西,按原样使用库,因为c是objective-c语法。” 我不知道你在包装哪个库,所以我将使用sqlite作为一个从头开始的例子。使用分层的方法,我会这样做: a)高级对象(订单、客户、供应商…) b)基类(记录) C)SQLite 所以基类被编写成直接调用sqlite,然后其他类作为常规的objective-c类工作。 任命如下: 1)高级对象(订单、客户、供应商…) 2)基类(记录) 3)sqlite包装器(objective-c) 4)SQLite 创建了同一个应用程序,但是创建、维护和调试级别3需要做额外的工作,几乎没有显示出来。 在第一个版本中,b层包装了sqlite,所以上面没有直接调用sqlite,也没有试图提供所有的sqlite功能。它只提供了层a所需的功能,并使用sqlite来实现所需的功能。它“包装”了sqlite,但使用了更特定于应用程序的方式。同一个记录类可以稍后在另一个应用程序中重用,并进行扩展以满足两个应用程序当时的需要。 |
4
0
既然objective-c使用结构,为什么不把它作为类似于结构的 NSRect ? |
Martin sku · 在目标C中打印时间 2 年前 |
Vinod prajapat · 如何更新数组的最后一个元素? 2 年前 |
subin272 · 修复iOS中的多个按钮单击事件? 6 年前 |
James Chan · 如何使用锁定/解锁? 6 年前 |
Josh F. · NSBundle mainBundle返回零 6 年前 |