A: 

Your +sharedInstance method returns a ContentSyncer*, not a FileDownloader*. That may be the cause of the setDelegate: not found warning.

Also, you can and should define your FileDownloaderDelegate protocol in FileDownloader.h. Import this header file in MyTableViewCell.h, but use quotes instead of angel brackets. E.g.,

#import "FileDownloader.h"
Darren
Thanks for the reply. The ContentSyncer was a left-over when I renamed the classes to make the code easier to read for posting here. I reedited the code. The code is compiled after I separated out the protocol declaration to a separate file according to a suggestion from here. http://stackoverflow.com/questions/1233371/how-to-conform-to-a-self-made-protocolI read somewhere that there might be some "circular imports". But I don't know where that happen. Now I can get updates from the UI's tableCell. The only thing left is compiler warning when I assign the delegate. Thansk!
tmin