Cool.  I was thinking of the standard of adding a lowercase k in front of the 
constants, but wasn't sure if this was canon law or not and wanted to stick 
with whatever the standard is.

One thing though.  I did do a #import of "Constants.h" into my framework's 
header file and that's not filling the role of what a .pch would fill in a 
standalone app, even though I thought that someone said it would.

If I put the #import there, the app immediately gets build errors.

Am I missing something on where I should import the constants' header?

Thanks



On Apr 13, 2016, at 12:29 PM, Charles Jenkins wrote:

> Alex,
> 
> I suddenly had big fires to put out yesterday and couldn’t respond, but Jens 
> is right. In the .m file but outside of any implementation, define the 
> constant string and assign its value. In the header file just declare the 
> same thing, but with the extern keyword and no value assignment.
> 
> This creates exactly one copy of the variable but allows other source files 
> to use it; the problem with what you were doing before was that it created a 
> totally new variable with the same name in every source file where you 
> imported the .h, which prevented the program from linking.
> 
> Not to contradict Jens, but I recommend a constant name like 
> kMyImportantConstant, not an all-uppercase name. All-uppercase names signify 
> macro constants, not actual variables. You don’t want to trick a maintainer, 
> not even your future self.
> 
> Also, because of my C++ background, I’d see if the compiler would accept 
> NSString const * const, because you want a constant pointer to an NSString 
> that is constant; but I recognize that may not be the way things are done in 
> Obj-C.
> 
> You could look in old Apple Obj-C example code declaring NSString constants 
> beginning with ‘k’ to see the right syntax.
> 
> -- 
> 
> Charles
> 
> On April 12, 2016 at 15:54:49, Jens Alfke (j...@mooseyard.com) wrote:
> 
>> 
>>> On Apr 12, 2016, at 10:30 AM, Alex Zavatone <z...@mac.com> wrote:
>>> 
>>> How should they be initialized in the .m?  Within an init method?
>> 
>> No, just
>> NSString * const ABC_MY_IMPORTANT_CONSTANT = @"abc";
>> 
>>> Also, I'm quite familiar with the .pch for iOS apps, but are frameworks 
>>> allowed a file like this or is that the myAwesomeFramework.h file?
>> 
>> That’s what the framework header is.
>> 
>>> Thank you sir.   Searching for instructions on how to do this is quite 
>>> challenging.
>> 
>> The ‘extern’ stuff is basic C, although it’s not stuff you deal with much 
>> using Obj-C. You might want to grab a book on C and read up on global 
>> variables.
>> 
>> —Jens

_______________________________________________

Cocoa-dev mailing list (Cocoa-dev@lists.apple.com)

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:
https://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com

This email sent to arch...@mail-archive.com

Reply via email to