• Open Menu Close Menu
  • Apple
  • Shopping Bag
  • Apple
  • Mac
  • iPad
  • iPhone
  • Watch
  • TV
  • Music
  • Support
  • Search apple.com
  • Shopping Bag

Lists

Open Menu Close Menu
  • Terms and Conditions
  • Lists hosted on this site
  • Email the Postmaster
  • Tips for posting to public mailing lists
Re: Calling getter on const object
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Calling getter on const object


  • Subject: Re: Calling getter on const object
  • From: Eeyore <email@hidden>
  • Date: Mon, 8 Nov 2010 09:02:20 -0800

I'm new at this too, so perhaps I am completely off here. My guess is that it isn't the const that is messing this up, but the non-class type. The problem I see is that "frame" is a pointer to an objc_object and objc_objects aren't the same as NSObjects (but, like I said, I'm new, so maybe they are interchangeable here). Does it work if you try declaring frame as a NSObject<FrameProtocol> instead of an id<FrameProtocol>?

Aaron


On Nov 8, 2010, at 8:37 AM, Jonny Taylor wrote:

> I'm afraid I'm not sure if I understand exactly what you're asking. I would like to be able access the "frame number" property (which is in fact stored as a variable within the class, and is fixed soon after instantiation) in spite of the fact that I only have a 'const' pointer to the object at the time I want to access it. Semantically I don't see why it should be unsafe to attempt to find out the value of that property.
>
> Either way, hopefully the actual code helps to answer your question:
>
> -(void)analyzeFrameAsync:(id<FrameProtocol>)frame
> {
> 	int num = frame.frameNumber;		// Temporary variable avoid problems with calling method on 'frame' [const] from block
> 	dispatch_async(analysisSerialQueue,
> 	^{
> 		[analyzer processFrame:frame];
> 		self.latestFrameNumberProcessed = num;		// I can't call frame.frameNumber from within the block (compiler error)
> 	});
> }
>
>
>
> On 8 Nov 2010, at 16:29, David Duncan wrote:
>
>> It might be useful to know what you expect to get from the const reference in the first place? Primarily because I highly suspect that it is not necessary to ensure the semantics that you desire.
>>
>> On Nov 8, 2010, at 4:59 AM, Jonny Taylor wrote:
>>
>>> I have encountered what I presume is a common newcomer's problem, but I haven't had any luck with google (maybe I'm using the wrong search terms?). Suppose I have a const id, e.g. "const id<FrameProtocol> frame". If I attempt to call a getter for the object I get the following compiler error:
>>> request for member 'frameNumber' in 'frame', which is of non-class type 'objc_object* const'
>>
>> --
>> David Duncan
>>
>
> _______________________________________________
>
> Cocoa-dev mailing list (email@hidden)
>
> Please do not post admin requests or moderator comments to the list.
> Contact the moderators at cocoa-dev-admins(at)lists.apple.com
>
> Help/Unsubscribe/Update your Subscription:
>
> This email sent to email@hidden
>

_______________________________________________

Cocoa-dev mailing list (email@hidden)

Please do not post admin requests or moderator comments to the list.
Contact the moderators at cocoa-dev-admins(at)lists.apple.com

Help/Unsubscribe/Update your Subscription:

This email sent to email@hidden

  • Follow-Ups:
    • Re: Calling getter on const object
      • From: Jonny Taylor <email@hidden>
References: 
 >Calling getter on const object (From: Jonny Taylor <email@hidden>)
 >Re: Calling getter on const object (From: David Duncan <email@hidden>)
 >Re: Calling getter on const object (From: Jonny Taylor <email@hidden>)

  • Prev by Date: Re: sizeof a function
  • Next by Date: Improve Download Speed using multiple connections
  • Previous by thread: Re: Calling getter on const object
  • Next by thread: Re: Calling getter on const object
  • Index(es):
    • Date
    • Thread