开发者

Supressing warning for a class (trying to simulate an Abstract class in objc)

This is the situation. I've been a C++ programmer for ages. I like abstract classes and "interfaces" so I woul开发者_高级运维d likt to do the same using objc.

I use a protocol for my interfaces, but the problem is that when my abstract class inherits from the protocol (I don't want to implement it here) I get warnings like:

warning: method definition for 'XXXXX' not found and 'XXXXX' class does not fully implement the 'XXXXXX' protocol.

Is there anyway to supress this? I hope child classes of this ones will throw "correct warnings" if base class did not implemented the protocol.

Another option is to inherit from the protocol just when needed, but I like to force this in the base class to make sure inherited implementes the interface.

Any tip?, Thanks in advance.


When you implement a protocol in an Objective-C class, you have to implement all the methods. However, you can provide stub implementations. This mailing list post describes how to use doesNotRecognizeSelector: in "abstract" classes.


I don't think there is a solution in a way you are looking for. You must define all methods declared in the protocol, at least implement them as an empty methods.

I understand that you are looking for a C++ like code, but Obj-C is different and we must live with it. Also, gcc supports c++/obj-c mix, so you can write some part of the project in pure C++ what is great when you need some low-level code or want something easy to port.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜