From a61bba1d1fc468b77d642810c0629a2e45401383 Mon Sep 17 00:00:00 2001 From: Andreas Linde Date: Wed, 7 Dec 2011 20:18:14 +0100 Subject: [PATCH] Add workaround for not requiring -all_load linker flag and some Xcode project adjustments --- Classes/CNSFixCategoryBug.h | 25 +++++++++++++++++++++ Classes/NSString+HockeyAdditions.m | 4 ++++ Classes/UIImage+HockeyAdditions.m | 5 +++++ Support/HockeySDK.xcodeproj/project.pbxproj | 18 ++++++++++----- 4 files changed, 46 insertions(+), 6 deletions(-) create mode 100644 Classes/CNSFixCategoryBug.h diff --git a/Classes/CNSFixCategoryBug.h b/Classes/CNSFixCategoryBug.h new file mode 100644 index 0000000000..b680612c44 --- /dev/null +++ b/Classes/CNSFixCategoryBug.h @@ -0,0 +1,25 @@ +// +// CNSFixCategoryBug.h +// HockeySDK +// +// Created by Andreas Linde on 12/7/11. +// Copyright (c) 2011 Andreas Linde. All rights reserved. +// + +#ifndef HockeySDK_CNSFixCategoryBug_h +#define HockeySDK_CNSFixCategoryBug_h + +/** + Add this macro before each category implementation, so we don't have to use + -all_load or -force_load to load object files from static libraries that only contain + categories and no classes. + See http://developer.apple.com/library/mac/#qa/qa2006/qa1490.html for more info. + + Shamelessly borrowed from Three20 + */ + +#define CNS_FIX_CATEGORY_BUG(name) @interface CNS_FIX_CATEGORY_BUG##name @end \ +@implementation CNS_FIX_CATEGORY_BUG##name @end + + +#endif diff --git a/Classes/NSString+HockeyAdditions.m b/Classes/NSString+HockeyAdditions.m index 6bd0600d09..a6483d4a07 100755 --- a/Classes/NSString+HockeyAdditions.m +++ b/Classes/NSString+HockeyAdditions.m @@ -25,6 +25,10 @@ #import "NSString+HockeyAdditions.h" +#ifdef HOCKEYLIB_STATIC_LIBRARY +#import "CNSFixCategoryBug.h" +CNS_FIX_CATEGORY_BUG(NSString_HockeyAdditions) +#endif @implementation NSString (HockeyAdditions) diff --git a/Classes/UIImage+HockeyAdditions.m b/Classes/UIImage+HockeyAdditions.m index ee531fece4..d0cdf2b26c 100644 --- a/Classes/UIImage+HockeyAdditions.m +++ b/Classes/UIImage+HockeyAdditions.m @@ -26,6 +26,11 @@ #import "UIImage+HockeyAdditions.h" #import "BWGlobal.h" +#ifdef HOCKEYLIB_STATIC_LIBRARY +#import "CNSFixCategoryBug.h" +CNS_FIX_CATEGORY_BUG(UIImage_HockeyAdditionsPrivate) +#endif + // Private helper methods @interface UIImage (HockeyAdditionsPrivate) - (void)addRoundedRectToPath:(CGRect)rect context:(CGContextRef)context ovalWidth:(CGFloat)ovalWidth ovalHeight:(CGFloat)ovalHeight; diff --git a/Support/HockeySDK.xcodeproj/project.pbxproj b/Support/HockeySDK.xcodeproj/project.pbxproj index 94f27928f0..477265146f 100644 --- a/Support/HockeySDK.xcodeproj/project.pbxproj +++ b/Support/HockeySDK.xcodeproj/project.pbxproj @@ -7,6 +7,7 @@ objects = { /* Begin PBXBuildFile section */ + 1E322DAD148FCE2100077977 /* CNSFixCategoryBug.h in Headers */ = {isa = PBXBuildFile; fileRef = 1E322DAC148FCE2100077977 /* CNSFixCategoryBug.h */; }; E400561E148D79B500EB22B9 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E400561D148D79B500EB22B9 /* Foundation.framework */; }; E400562C148D79B500EB22B9 /* SenTestingKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E400562B148D79B500EB22B9 /* SenTestingKit.framework */; }; E400562E148D79B500EB22B9 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E400562D148D79B500EB22B9 /* UIKit.framework */; }; @@ -55,6 +56,7 @@ /* End PBXContainerItemProxy section */ /* Begin PBXFileReference section */ + 1E322DAC148FCE2100077977 /* CNSFixCategoryBug.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CNSFixCategoryBug.h; sourceTree = ""; }; E400561A148D79B500EB22B9 /* libHockeySDK.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libHockeySDK.a; sourceTree = BUILT_PRODUCTS_DIR; }; E400561D148D79B500EB22B9 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; }; E400562A148D79B500EB22B9 /* HockeySDKTests.octest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = HockeySDKTests.octest; sourceTree = BUILT_PRODUCTS_DIR; }; @@ -226,6 +228,7 @@ E41EB46E148D7BF50015DEDC /* PSWebTableViewCell.m */, E41EB46F148D7BF50015DEDC /* UIImage+HockeyAdditions.h */, E41EB470148D7BF50015DEDC /* UIImage+HockeyAdditions.m */, + 1E322DAC148FCE2100077977 /* CNSFixCategoryBug.h */, ); name = Helper; sourceTree = ""; @@ -249,6 +252,7 @@ E41EB483148D7BF50015DEDC /* PSStoreButton.h in Headers */, E41EB485148D7BF50015DEDC /* PSWebTableViewCell.h in Headers */, E41EB487148D7BF50015DEDC /* UIImage+HockeyAdditions.h in Headers */, + 1E322DAD148FCE2100077977 /* CNSFixCategoryBug.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -414,11 +418,12 @@ "$(inherited)", ); GCC_SYMBOLS_PRIVATE_EXTERN = NO; - GCC_VERSION = com.apple.compilers.llvm.clang.1_0; + GCC_VERSION = ""; GCC_WARN_ABOUT_MISSING_PROTOTYPES = YES; GCC_WARN_ABOUT_RETURN_TYPE = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 5.0; + IPHONEOS_DEPLOYMENT_TARGET = 3.0; + OTHER_CFLAGS = ""; SDKROOT = iphoneos; }; name = Debug; @@ -434,11 +439,12 @@ COPY_PHASE_STRIP = YES; GCC_C_LANGUAGE_STANDARD = gnu99; GCC_PREPROCESSOR_DEFINITIONS = HOCKEYLIB_STATIC_LIBRARY; - GCC_VERSION = com.apple.compilers.llvm.clang.1_0; + GCC_VERSION = ""; GCC_WARN_ABOUT_MISSING_PROTOTYPES = YES; GCC_WARN_ABOUT_RETURN_TYPE = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 5.0; + IPHONEOS_DEPLOYMENT_TARGET = 3.0; + OTHER_CFLAGS = ""; SDKROOT = iphoneos; VALIDATE_PRODUCT = YES; }; @@ -452,7 +458,7 @@ "$(inherited)", "\"$(SRCROOT)/../Vendor\"", ); - OTHER_LDFLAGS = "-ObjC"; + OTHER_LDFLAGS = ""; PRODUCT_NAME = "$(TARGET_NAME)"; SKIP_INSTALL = YES; }; @@ -466,7 +472,7 @@ "$(inherited)", "\"$(SRCROOT)/../Vendor\"", ); - OTHER_LDFLAGS = "-ObjC"; + OTHER_LDFLAGS = ""; PRODUCT_NAME = "$(TARGET_NAME)"; SKIP_INSTALL = YES; };