[sword-devel] OS X/iPhoneOS based development

Manfred Bergmann manfred.bergmann at me.com
Thu Apr 15 02:15:04 MST 2010

Hi there.

Now with the iPad already released in USA and in other countries shortly I'd like to push for a consolidation of the Objective-C++ SWORD wrapper classes.
Which over time has grown quite large consisting of 20 classes in the version MacSword uses. Just for an explanation to others, they build the basis for SWORD based OS X applications and are intended to be able to code in Objective-C exclusively in upper levels of the application (UI).
PocketSword uses a subset of those classes with some modifications.

Now shortly since I believe we will again branch for the iPad because it will be a different UI eventually I feel that we have to do something now. Otherwise we will end up having to maintain three code bases which could be one. And it will be a mess.

Since MacSword 2.2 was released recently I have some time now to work on this.
I would suggest to make a framework of the Objective-C wrapper classes which can then be used in any OS X (Cocoa) based application just as easily as other frameworks can be used. It would still be necessary to have different builds for ARM and Intel/PPC and Xcode projects but those can use the same code base.
If any user of the framework needs customised behaviour it is still possible to subclass if really needed.

The things that need closer look are:
- Make it work in gc and none-gc environments.
In MacSword 2.2 refactorings I tried to put in -dealloc and -finalize methods in all classes I touched together with autoreleased initialisations.
- Logging.
This might need some time. While I would like to be able to write logs to file with specifying log levels this is not something the iPhone/iPad wants due to slower FS access. But I'm sure there is a solution to this. If some protocols are defined each front-end can still implement it's own logging implementation.
- Code that uses NSUserDefaults.
Right now keys for locked modules are stored in NSUserDefaults. Is this something that works on iPhoneOS?
- Searching/indexing.
While the iPhone uses the SWORD provided clucene based indexing and searching MacSword uses SearchKit.
This not a problem at all but we have to define a protocol where each application can implement a provider.
- Further we would need a place to source control it. Can we have a place for it at CrossWire including a new project in Jira?


Nic, if you are busy with things for PocketSword right now, don't worry. I would start working on this, compare both code bases and would start a discussion with you about things I'm uncertain - if you give your "go" to do this all.
I'd also like to finally put in some Unit tests for critical parts so that it can be tested more easily. Unfortunately Unit testing is not so comfortable in Obj-C as it is in Java.


More information about the sword-devel mailing list