CGFloat與float的區(qū)別
查看CGFloat的定義就會發(fā)現(xiàn)
typedef CGFLOAT_TYPE CGFloat;
#if defined(__LP64__) && __LP64__
# define CGFLOAT_TYPE double
# define CGFLOAT_IS_DOUBLE 1
# define CGFLOAT_MIN DBL_MIN
# define CGFLOAT_MAX DBL_MAX
#else
# define CGFLOAT_TYPE float
# define CGFLOAT_IS_DOUBLE 0
# define CGFLOAT_MIN FLT_MIN
# define CGFLOAT_MAX FLT_MAX
#endif
不難發(fā)現(xiàn)CGFloat其實是double與float的結(jié)合體,在64位系統(tǒng)上眯杏,CGFloat是double類型锭部,在32位系統(tǒng)上是float類型;
FOUNDATION_EXPORT與#define的區(qū)別
#if defined(__cplusplus)
#define FOUNDATION_EXTERN extern "C"
#else
#define FOUNDATION_EXTERN extern
#endif
#if TARGET_OS_WIN32
#if defined(NSBUILDINGFOUNDATION)
#define FOUNDATION_EXPORT FOUNDATION_EXTERN __declspec(dllexport)
#else
#define FOUNDATION_EXPORT FOUNDATION_EXTERN __declspec(dllimport)
#endif
#define FOUNDATION_IMPORT FOUNDATION_EXTERN __declspec(dllimport)
#else
#define FOUNDATION_EXPORT FOUNDATION_EXTERN
#define FOUNDATION_IMPORT FOUNDATION_EXTERN
#endif
仔細看這段代碼就知道考阱,F(xiàn)OUNDATION_EXPORT的作用相當于extern国裳,define不會對所定義的內(nèi)容進行檢查,所以具體用法也是不一樣的盗温。
一般情況下FOUNDATION_EXPORT的用法
xxx.h
FOUNDATION_EXPORT NSString *const USERNAME;
FOUNDATION_EXPORT int PASSWORD;
xxx.m
NSString *const USERNAME = @"user_name";
int PASSWORD = 123;