开发者

conflicting distributed object modifiers on return type in implementation of 'release' in Singleton class

开发者 https://www.devze.com 2023-04-08 03:52 出处:网络
I have recently upgraded to Xcode 4.2 and itsstarted to give me so many semantic warnings with my code...

I have recently upgraded to Xcode 4.2 and its started to give me so many semantic warnings with my code...

one of them is "conflicting distributed object modifiers on ret开发者_如何学运维urn type in implementation of 'release'" in my singleton class..

I read somewhere about - (oneway void)release; to release this warning but once i put that in my code i start to getting compile error as "Duplicate declaration of release" not sure why and if you try to find the second declaration it shows in this line

SYNTHESIZE_SINGLETON_FOR_CLASS(GlobalClass);

Update: This is the post where it explained about - (oneway void)release;

how to get rid of this warning "conflicting distributed object modifiers on return type in implementation of release" ? and why its happening ?


The post you link to contains the solution to the problem in the title and explains why it happened to you.

However, from reading your question it appears that your new issue is caused by mis-applying the great advice in that post's answer. I am fairly certain you added the line

- (oneway void) release {}

in your .m file rather than amending your existing

- (void) release {

line with the extra word "oneway".

This would be why you get "Duplicate declaration of release". Yes, this is confusing because it's a duplicate definition that is invisibly creating the duplicate declaration. But I've just tried doing it your wrong way, and I get that "duplicate declaration" message.

I get the impression, perhaps wrongly, that you didn't realise you actually had a release method, particularly when you think adding the line will "release this warning".

Don't take all errors too literally, and always try to think what someone might really mean as it's often different from what they say, but do try and understand what is in your code, even in the classes you've taken off the shelf.

And to address other questions raised, the reason you're overriding release is because it is a singleton which is not usually released. You probably only have a definition in your code, which will suffice.

What Jonathan Grynspan has to say about specifying on both the declaration and the definition is broadly valid (and indeed the root of the issue) but it's important to recognise that in this specific case, the declaration is by Apple's foundation code which has changed.

So, if it's not clear already, amend the line that XCode finds problem with to include the word oneway.

0

精彩评论

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

关注公众号