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