This commit is contained in:
giuseppenuc committed 2016-02-24 16:56:39 +01:00
1 parent d281d765ea
commit 5b074a5176
1261 files changed
+199158 -7303

No files matched your search

@@ -0,0 +1,505 @@
// !$*UTF8*$!
{
archiveVersion = 1;
classes = {
};
objectVersion = 46;
objects = {
/* Begin PBXBuildFile section */
0395293E15043C7A00D25639 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0395293D15043C7A00D25639 /* UIKit.framework */; };
0395294015043C7A00D25639 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0395293F15043C7A00D25639 /* Foundation.framework */; };
0395294215043C7A00D25639 /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0395294115043C7A00D25639 /* CoreGraphics.framework */; };
0395294815043C7A00D25639 /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 0395294615043C7A00D25639 /* InfoPlist.strings */; };
0395294A15043C7A00D25639 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 0395294915043C7A00D25639 /* main.m */; };
0395294E15043C7A00D25639 /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 0395294D15043C7A00D25639 /* AppDelegate.m */; };
0395295115043C7A00D25639 /* MainStoryboard_iPhone.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 0395294F15043C7A00D25639 /* MainStoryboard_iPhone.storyboard */; };
0395295415043C7A00D25639 /* MainStoryboard_iPad.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 0395295215043C7A00D25639 /* MainStoryboard_iPad.storyboard */; };
0395295715043C7A00D25639 /* MasterViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 0395295615043C7A00D25639 /* MasterViewController.m */; };
0395295A15043C7A00D25639 /* DetailViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 0395295915043C7A00D25639 /* DetailViewController.m */; };
0395296215043C7A00D25639 /* SenTestingKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0395296115043C7A00D25639 /* SenTestingKit.framework */; };
0395296315043C7A00D25639 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0395293D15043C7A00D25639 /* UIKit.framework */; };
0395296415043C7A00D25639 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0395293F15043C7A00D25639 /* Foundation.framework */; };
0395296C15043C7A00D25639 /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 0395296A15043C7A00D25639 /* InfoPlist.strings */; };
0395296F15043C7A00D25639 /* iOS5ExampleTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 0395296E15043C7A00D25639 /* iOS5ExampleTests.m */; };
0395297915043CF000D25639 /* libOCMock.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 0395297815043CF000D25639 /* libOCMock.a */; };
03FA415E1614FCFD00F9324F /* ProtocolTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 03FA415D1614FCFD00F9324F /* ProtocolTests.m */; };
/* End PBXBuildFile section */
/* Begin PBXContainerItemProxy section */
0395296515043C7A00D25639 /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy;
containerPortal = 0395293015043C7A00D25639 /* Project object */;
proxyType = 1;
remoteGlobalIDString = 0395293815043C7A00D25639;
remoteInfo = iOS5Example;
};
/* End PBXContainerItemProxy section */
/* Begin PBXFileReference section */
0395293915043C7A00D25639 /* iOS5Example.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = iOS5Example.app; sourceTree = BUILT_PRODUCTS_DIR; };
0395293D15043C7A00D25639 /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = System/Library/Frameworks/UIKit.framework; sourceTree = SDKROOT; };
0395293F15043C7A00D25639 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; };
0395294115043C7A00D25639 /* CoreGraphics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreGraphics.framework; path = System/Library/Frameworks/CoreGraphics.framework; sourceTree = SDKROOT; };
0395294515043C7A00D25639 /* iOS5Example-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "iOS5Example-Info.plist"; sourceTree = "<group>"; };
0395294715043C7A00D25639 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/InfoPlist.strings; sourceTree = "<group>"; };
0395294915043C7A00D25639 /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = "<group>"; };
0395294B15043C7A00D25639 /* iOS5Example-Prefix.pch */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "iOS5Example-Prefix.pch"; sourceTree = "<group>"; };
0395294C15043C7A00D25639 /* AppDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = "<group>"; };
0395294D15043C7A00D25639 /* AppDelegate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = AppDelegate.m; sourceTree = "<group>"; };
0395295015043C7A00D25639 /* en */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = en; path = en.lproj/MainStoryboard_iPhone.storyboard; sourceTree = "<group>"; };
0395295315043C7A00D25639 /* en */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = en; path = en.lproj/MainStoryboard_iPad.storyboard; sourceTree = "<group>"; };
0395295515043C7A00D25639 /* MasterViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MasterViewController.h; sourceTree = "<group>"; };
0395295615043C7A00D25639 /* MasterViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = MasterViewController.m; sourceTree = "<group>"; };
0395295815043C7A00D25639 /* DetailViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = DetailViewController.h; sourceTree = "<group>"; };
0395295915043C7A00D25639 /* DetailViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = DetailViewController.m; sourceTree = "<group>"; };
0395296015043C7A00D25639 /* iOS5ExampleTests.octest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = iOS5ExampleTests.octest; sourceTree = BUILT_PRODUCTS_DIR; };
0395296115043C7A00D25639 /* SenTestingKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = SenTestingKit.framework; path = Library/Frameworks/SenTestingKit.framework; sourceTree = DEVELOPER_DIR; };
0395296915043C7A00D25639 /* iOS5ExampleTests-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "iOS5ExampleTests-Info.plist"; sourceTree = "<group>"; };
0395296B15043C7A00D25639 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/InfoPlist.strings; sourceTree = "<group>"; };
0395296D15043C7A00D25639 /* iOS5ExampleTests.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = iOS5ExampleTests.h; sourceTree = "<group>"; };
0395296E15043C7A00D25639 /* iOS5ExampleTests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = iOS5ExampleTests.m; sourceTree = "<group>"; };
0395297815043CF000D25639 /* libOCMock.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libOCMock.a; path = usr/lib/libOCMock.a; sourceTree = "<group>"; };
03FA415C1614FCFD00F9324F /* ProtocolTests.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ProtocolTests.h; sourceTree = "<group>"; };
03FA415D1614FCFD00F9324F /* ProtocolTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ProtocolTests.m; sourceTree = "<group>"; };
/* End PBXFileReference section */
/* Begin PBXFrameworksBuildPhase section */
0395293615043C7A00D25639 /* Frameworks */ = {
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
0395293E15043C7A00D25639 /* UIKit.framework in Frameworks */,
0395294015043C7A00D25639 /* Foundation.framework in Frameworks */,
0395294215043C7A00D25639 /* CoreGraphics.framework in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
};
0395295C15043C7A00D25639 /* Frameworks */ = {
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
0395297915043CF000D25639 /* libOCMock.a in Frameworks */,
0395296215043C7A00D25639 /* SenTestingKit.framework in Frameworks */,
0395296315043C7A00D25639 /* UIKit.framework in Frameworks */,
0395296415043C7A00D25639 /* Foundation.framework in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXFrameworksBuildPhase section */
/* Begin PBXGroup section */
0395292E15043C7A00D25639 = {
isa = PBXGroup;
children = (
0395294315043C7A00D25639 /* iOS5Example */,
0395296715043C7A00D25639 /* iOS5ExampleTests */,
0395297A15043D8600D25639 /* Libraries */,
0395293C15043C7A00D25639 /* Frameworks */,
0395293A15043C7A00D25639 /* Products */,
);
sourceTree = "<group>";
};
0395293A15043C7A00D25639 /* Products */ = {
isa = PBXGroup;
children = (
0395293915043C7A00D25639 /* iOS5Example.app */,
0395296015043C7A00D25639 /* iOS5ExampleTests.octest */,
);
name = Products;
sourceTree = "<group>";
};
0395293C15043C7A00D25639 /* Frameworks */ = {
isa = PBXGroup;
children = (
0395293D15043C7A00D25639 /* UIKit.framework */,
0395293F15043C7A00D25639 /* Foundation.framework */,
0395294115043C7A00D25639 /* CoreGraphics.framework */,
0395296115043C7A00D25639 /* SenTestingKit.framework */,
);
name = Frameworks;
sourceTree = "<group>";
};
0395294315043C7A00D25639 /* iOS5Example */ = {
isa = PBXGroup;
children = (
0395294C15043C7A00D25639 /* AppDelegate.h */,
0395294D15043C7A00D25639 /* AppDelegate.m */,
0395294F15043C7A00D25639 /* MainStoryboard_iPhone.storyboard */,
0395295215043C7A00D25639 /* MainStoryboard_iPad.storyboard */,
0395295515043C7A00D25639 /* MasterViewController.h */,
0395295615043C7A00D25639 /* MasterViewController.m */,
0395295815043C7A00D25639 /* DetailViewController.h */,
0395295915043C7A00D25639 /* DetailViewController.m */,
0395294415043C7A00D25639 /* Supporting Files */,
);
path = iOS5Example;
sourceTree = "<group>";
};
0395294415043C7A00D25639 /* Supporting Files */ = {
isa = PBXGroup;
children = (
0395294515043C7A00D25639 /* iOS5Example-Info.plist */,
0395294615043C7A00D25639 /* InfoPlist.strings */,
0395294915043C7A00D25639 /* main.m */,
0395294B15043C7A00D25639 /* iOS5Example-Prefix.pch */,
);
name = "Supporting Files";
sourceTree = "<group>";
};
0395296715043C7A00D25639 /* iOS5ExampleTests */ = {
isa = PBXGroup;
children = (
0395296D15043C7A00D25639 /* iOS5ExampleTests.h */,
0395296E15043C7A00D25639 /* iOS5ExampleTests.m */,
03FA415C1614FCFD00F9324F /* ProtocolTests.h */,
03FA415D1614FCFD00F9324F /* ProtocolTests.m */,
0395296815043C7A00D25639 /* Supporting Files */,
);
path = iOS5ExampleTests;
sourceTree = "<group>";
};
0395296815043C7A00D25639 /* Supporting Files */ = {
isa = PBXGroup;
children = (
0395296915043C7A00D25639 /* iOS5ExampleTests-Info.plist */,
0395296A15043C7A00D25639 /* InfoPlist.strings */,
);
name = "Supporting Files";
sourceTree = "<group>";
};
0395297A15043D8600D25639 /* Libraries */ = {
isa = PBXGroup;
children = (
0395297815043CF000D25639 /* libOCMock.a */,
);
name = Libraries;
sourceTree = "<group>";
};
/* End PBXGroup section */
/* Begin PBXNativeTarget section */
0395293815043C7A00D25639 /* iOS5Example */ = {
isa = PBXNativeTarget;
buildConfigurationList = 0395297215043C7A00D25639 /* Build configuration list for PBXNativeTarget "iOS5Example" */;
buildPhases = (
0395293515043C7A00D25639 /* Sources */,
0395293615043C7A00D25639 /* Frameworks */,
0395293715043C7A00D25639 /* Resources */,
);
buildRules = (
);
dependencies = (
);
name = iOS5Example;
productName = iOS5Example;
productReference = 0395293915043C7A00D25639 /* iOS5Example.app */;
productType = "com.apple.product-type.application";
};
0395295F15043C7A00D25639 /* iOS5ExampleTests */ = {
isa = PBXNativeTarget;
buildConfigurationList = 0395297515043C7A00D25639 /* Build configuration list for PBXNativeTarget "iOS5ExampleTests" */;
buildPhases = (
0395295B15043C7A00D25639 /* Sources */,
0395295C15043C7A00D25639 /* Frameworks */,
0395295D15043C7A00D25639 /* Resources */,
0395295E15043C7A00D25639 /* ShellScript */,
);
buildRules = (
);
dependencies = (
0395296615043C7A00D25639 /* PBXTargetDependency */,
);
name = iOS5ExampleTests;
productName = iOS5ExampleTests;
productReference = 0395296015043C7A00D25639 /* iOS5ExampleTests.octest */;
productType = "com.apple.product-type.bundle";
};
/* End PBXNativeTarget section */
/* Begin PBXProject section */
0395293015043C7A00D25639 /* Project object */ = {
isa = PBXProject;
attributes = {
LastUpgradeCheck = 0420;
ORGANIZATIONNAME = ThoughtWorks;
};
buildConfigurationList = 0395293315043C7A00D25639 /* Build configuration list for PBXProject "iOS5Example" */;
compatibilityVersion = "Xcode 3.2";
developmentRegion = English;
hasScannedForEncodings = 0;
knownRegions = (
en,
);
mainGroup = 0395292E15043C7A00D25639;
productRefGroup = 0395293A15043C7A00D25639 /* Products */;
projectDirPath = "";
projectRoot = "";
targets = (
0395293815043C7A00D25639 /* iOS5Example */,
0395295F15043C7A00D25639 /* iOS5ExampleTests */,
);
};
/* End PBXProject section */
/* Begin PBXResourcesBuildPhase section */
0395293715043C7A00D25639 /* Resources */ = {
isa = PBXResourcesBuildPhase;
buildActionMask = 2147483647;
files = (
0395294815043C7A00D25639 /* InfoPlist.strings in Resources */,
0395295115043C7A00D25639 /* MainStoryboard_iPhone.storyboard in Resources */,
0395295415043C7A00D25639 /* MainStoryboard_iPad.storyboard in Resources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
0395295D15043C7A00D25639 /* Resources */ = {
isa = PBXResourcesBuildPhase;
buildActionMask = 2147483647;
files = (
0395296C15043C7A00D25639 /* InfoPlist.strings in Resources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXResourcesBuildPhase section */
/* Begin PBXShellScriptBuildPhase section */
0395295E15043C7A00D25639 /* ShellScript */ = {
isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647;
files = (
);
inputPaths = (
);
outputPaths = (
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
shellScript = "# Run the unit tests in this test bundle.\n\"${SYSTEM_DEVELOPER_DIR}/Tools/RunUnitTests\"\n";
};
/* End PBXShellScriptBuildPhase section */
/* Begin PBXSourcesBuildPhase section */
0395293515043C7A00D25639 /* Sources */ = {
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
0395294A15043C7A00D25639 /* main.m in Sources */,
0395294E15043C7A00D25639 /* AppDelegate.m in Sources */,
0395295715043C7A00D25639 /* MasterViewController.m in Sources */,
0395295A15043C7A00D25639 /* DetailViewController.m in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
0395295B15043C7A00D25639 /* Sources */ = {
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
0395296F15043C7A00D25639 /* iOS5ExampleTests.m in Sources */,
03FA415E1614FCFD00F9324F /* ProtocolTests.m in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXSourcesBuildPhase section */
/* Begin PBXTargetDependency section */
0395296615043C7A00D25639 /* PBXTargetDependency */ = {
isa = PBXTargetDependency;
target = 0395293815043C7A00D25639 /* iOS5Example */;
targetProxy = 0395296515043C7A00D25639 /* PBXContainerItemProxy */;
};
/* End PBXTargetDependency section */
/* Begin PBXVariantGroup section */
0395294615043C7A00D25639 /* InfoPlist.strings */ = {
isa = PBXVariantGroup;
children = (
0395294715043C7A00D25639 /* en */,
);
name = InfoPlist.strings;
sourceTree = "<group>";
};
0395294F15043C7A00D25639 /* MainStoryboard_iPhone.storyboard */ = {
isa = PBXVariantGroup;
children = (
0395295015043C7A00D25639 /* en */,
);
name = MainStoryboard_iPhone.storyboard;
sourceTree = "<group>";
};
0395295215043C7A00D25639 /* MainStoryboard_iPad.storyboard */ = {
isa = PBXVariantGroup;
children = (
0395295315043C7A00D25639 /* en */,
);
name = MainStoryboard_iPad.storyboard;
sourceTree = "<group>";
};
0395296A15043C7A00D25639 /* InfoPlist.strings */ = {
isa = PBXVariantGroup;
children = (
0395296B15043C7A00D25639 /* en */,
);
name = InfoPlist.strings;
sourceTree = "<group>";
};
/* End PBXVariantGroup section */
/* Begin XCBuildConfiguration section */
0395297015043C7A00D25639 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
ALWAYS_SEARCH_USER_PATHS = NO;
ARCHS = "$(ARCHS_STANDARD_32_BIT)";
CLANG_ENABLE_OBJC_ARC = YES;
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
COPY_PHASE_STRIP = NO;
GCC_C_LANGUAGE_STANDARD = gnu99;
GCC_DYNAMIC_NO_PIC = NO;
GCC_OPTIMIZATION_LEVEL = 0;
GCC_PREPROCESSOR_DEFINITIONS = (
"DEBUG=1",
"$(inherited)",
);
GCC_SYMBOLS_PRIVATE_EXTERN = NO;
GCC_VERSION = com.apple.compilers.llvm.clang.1_0;
GCC_WARN_ABOUT_MISSING_PROTOTYPES = YES;
GCC_WARN_ABOUT_RETURN_TYPE = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
IPHONEOS_DEPLOYMENT_TARGET = 5.0;
SDKROOT = iphoneos;
TARGETED_DEVICE_FAMILY = "1,2";
};
name = Debug;
};
0395297115043C7A00D25639 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
ALWAYS_SEARCH_USER_PATHS = NO;
ARCHS = "$(ARCHS_STANDARD_32_BIT)";
CLANG_ENABLE_OBJC_ARC = YES;
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
COPY_PHASE_STRIP = YES;
GCC_C_LANGUAGE_STANDARD = gnu99;
GCC_VERSION = com.apple.compilers.llvm.clang.1_0;
GCC_WARN_ABOUT_MISSING_PROTOTYPES = YES;
GCC_WARN_ABOUT_RETURN_TYPE = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
IPHONEOS_DEPLOYMENT_TARGET = 5.0;
OTHER_CFLAGS = "-DNS_BLOCK_ASSERTIONS=1";
SDKROOT = iphoneos;
TARGETED_DEVICE_FAMILY = "1,2";
VALIDATE_PRODUCT = YES;
};
name = Release;
};
0395297315043C7A00D25639 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
GCC_PRECOMPILE_PREFIX_HEADER = YES;
GCC_PREFIX_HEADER = "iOS5Example/iOS5Example-Prefix.pch";
INFOPLIST_FILE = "iOS5Example/iOS5Example-Info.plist";
PRODUCT_NAME = "$(TARGET_NAME)";
WRAPPER_EXTENSION = app;
};
name = Debug;
};
0395297415043C7A00D25639 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
GCC_PRECOMPILE_PREFIX_HEADER = YES;
GCC_PREFIX_HEADER = "iOS5Example/iOS5Example-Prefix.pch";
INFOPLIST_FILE = "iOS5Example/iOS5Example-Info.plist";
PRODUCT_NAME = "$(TARGET_NAME)";
WRAPPER_EXTENSION = app;
};
name = Release;
};
0395297615043C7A00D25639 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
BUNDLE_LOADER = "$(BUILT_PRODUCTS_DIR)/iOS5Example.app/iOS5Example";
FRAMEWORK_SEARCH_PATHS = (
"$(SDKROOT)/Developer/Library/Frameworks",
"$(DEVELOPER_LIBRARY_DIR)/Frameworks",
);
GCC_PRECOMPILE_PREFIX_HEADER = YES;
GCC_PREFIX_HEADER = "iOS5Example/iOS5Example-Prefix.pch";
HEADER_SEARCH_PATHS = "\"$(SRCROOT)/usr/include\"";
INFOPLIST_FILE = "iOS5ExampleTests/iOS5ExampleTests-Info.plist";
LIBRARY_SEARCH_PATHS = (
"$(inherited)",
"\"$(SRCROOT)/usr/lib\"",
);
OTHER_LDFLAGS = (
"-force_load",
"\"$(SRCROOT)/usr/lib/libOCMock.a\"",
"-ObjC",
);
PRODUCT_NAME = "$(TARGET_NAME)";
TEST_HOST = "$(BUNDLE_LOADER)";
WRAPPER_EXTENSION = octest;
};
name = Debug;
};
0395297715043C7A00D25639 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
BUNDLE_LOADER = "$(BUILT_PRODUCTS_DIR)/iOS5Example.app/iOS5Example";
FRAMEWORK_SEARCH_PATHS = (
"$(SDKROOT)/Developer/Library/Frameworks",
"$(DEVELOPER_LIBRARY_DIR)/Frameworks",
);
GCC_PRECOMPILE_PREFIX_HEADER = YES;
GCC_PREFIX_HEADER = "iOS5Example/iOS5Example-Prefix.pch";
HEADER_SEARCH_PATHS = "\"$(SRCROOT)/usr/include\"";
INFOPLIST_FILE = "iOS5ExampleTests/iOS5ExampleTests-Info.plist";
LIBRARY_SEARCH_PATHS = (
"$(inherited)",
"\"$(SRCROOT)/usr/lib\"",
);
OTHER_LDFLAGS = (
"-force_load",
"\"$(SRCROOT)/usr/lib/libOCMock.a\"",
"-ObjC",
);
PRODUCT_NAME = "$(TARGET_NAME)";
TEST_HOST = "$(BUNDLE_LOADER)";
WRAPPER_EXTENSION = octest;
};
name = Release;
};
/* End XCBuildConfiguration section */
/* Begin XCConfigurationList section */
0395293315043C7A00D25639 /* Build configuration list for PBXProject "iOS5Example" */ = {
isa = XCConfigurationList;
buildConfigurations = (
0395297015043C7A00D25639 /* Debug */,
0395297115043C7A00D25639 /* Release */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
0395297215043C7A00D25639 /* Build configuration list for PBXNativeTarget "iOS5Example" */ = {
isa = XCConfigurationList;
buildConfigurations = (
0395297315043C7A00D25639 /* Debug */,
0395297415043C7A00D25639 /* Release */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
0395297515043C7A00D25639 /* Build configuration list for PBXNativeTarget "iOS5ExampleTests" */ = {
isa = XCConfigurationList;
buildConfigurations = (
0395297615043C7A00D25639 /* Debug */,
0395297715043C7A00D25639 /* Release */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
/* End XCConfigurationList section */
};
rootObject = 0395293015043C7A00D25639 /* Project object */;
}
@@ -0,0 +1,12 @@
//
// AppDelegate.h
// iOS5Example
//
#import <UIKit/UIKit.h>
@interface AppDelegate : UIResponder <UIApplicationDelegate>
@property (strong, nonatomic) UIWindow *window;
@end
@@ -0,0 +1,62 @@
//
// AppDelegate.m
// iOS5Example
//
#import "AppDelegate.h"
@implementation AppDelegate
@synthesize window = _window;
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
// Override point for customization after application launch.
if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPad) {
UISplitViewController *splitViewController = (UISplitViewController *)self.window.rootViewController;
UINavigationController *navigationController = [splitViewController.viewControllers lastObject];
splitViewController.delegate = (id)navigationController.topViewController;
}
return YES;
}
- (void)applicationWillResignActive:(UIApplication *)application
{
/*
Sent when the application is about to move from active to inactive state. This can occur for certain types of temporary interruptions (such as an incoming phone call or SMS message) or when the user quits the application and it begins the transition to the background state.
Use this method to pause ongoing tasks, disable timers, and throttle down OpenGL ES frame rates. Games should use this method to pause the game.
*/
}
- (void)applicationDidEnterBackground:(UIApplication *)application
{
/*
Use this method to release shared resources, save user data, invalidate timers, and store enough application state information to restore your application to its current state in case it is terminated later.
If your application supports background execution, this method is called instead of applicationWillTerminate: when the user quits.
*/
}
- (void)applicationWillEnterForeground:(UIApplication *)application
{
/*
Called as part of the transition from the background to the inactive state; here you can undo many of the changes made on entering the background.
*/
}
- (void)applicationDidBecomeActive:(UIApplication *)application
{
/*
Restart any tasks that were paused (or not yet started) while the application was inactive. If the application was previously in the background, optionally refresh the user interface.
*/
}
- (void)applicationWillTerminate:(UIApplication *)application
{
/*
Called when the application is about to terminate.
Save data if appropriate.
See also applicationDidEnterBackground:.
*/
}
@end
@@ -0,0 +1,14 @@
//
// DetailViewController.h
// iOS5Example
//
#import <UIKit/UIKit.h>
@interface DetailViewController : UIViewController <UISplitViewControllerDelegate>
@property (strong, nonatomic) id detailItem;
@property (strong, nonatomic) IBOutlet UILabel *detailDescriptionLabel;
@end
@@ -0,0 +1,112 @@
//
// DetailViewController.m
// iOS5Example
//
#import "DetailViewController.h"
@interface DetailViewController ()
@property (strong, nonatomic) UIPopoverController *masterPopoverController;
- (void)configureView;
@end
@implementation DetailViewController
@synthesize detailItem = _detailItem;
@synthesize detailDescriptionLabel = _detailDescriptionLabel;
@synthesize masterPopoverController = _masterPopoverController;
#pragma mark - Managing the detail item
- (void)setDetailItem:(id)newDetailItem
{
if (_detailItem != newDetailItem) {
_detailItem = newDetailItem;
// Update the view.
[self configureView];
}
if (self.masterPopoverController != nil) {
[self.masterPopoverController dismissPopoverAnimated:YES];
}
}
- (void)configureView
{
// Update the user interface for the detail item.
if (self.detailItem) {
self.detailDescriptionLabel.text = [self.detailItem description];
}
}
- (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
// Release any cached data, images, etc that aren't in use.
}
#pragma mark - View lifecycle
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
[self configureView];
}
- (void)viewDidUnload
{
[super viewDidUnload];
// Release any retained subviews of the main view.
// e.g. self.myOutlet = nil;
}
- (void)viewWillAppear:(BOOL)animated
{
[super viewWillAppear:animated];
}
- (void)viewDidAppear:(BOOL)animated
{
[super viewDidAppear:animated];
}
- (void)viewWillDisappear:(BOOL)animated
{
[super viewWillDisappear:animated];
}
- (void)viewDidDisappear:(BOOL)animated
{
[super viewDidDisappear:animated];
}
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
// Return YES for supported orientations
if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone) {
return (interfaceOrientation != UIInterfaceOrientationPortraitUpsideDown);
} else {
return YES;
}
}
#pragma mark - Split view
- (void)splitViewController:(UISplitViewController *)splitController willHideViewController:(UIViewController *)viewController withBarButtonItem:(UIBarButtonItem *)barButtonItem forPopoverController:(UIPopoverController *)popoverController
{
barButtonItem.title = NSLocalizedString(@"Master", @"Master");
[self.navigationItem setLeftBarButtonItem:barButtonItem animated:YES];
self.masterPopoverController = popoverController;
}
- (void)splitViewController:(UISplitViewController *)splitController willShowViewController:(UIViewController *)viewController invalidatingBarButtonItem:(UIBarButtonItem *)barButtonItem
{
// Called when the view is shown again in the split view, invalidating the button and popover controller.
[self.navigationItem setLeftBarButtonItem:nil animated:YES];
self.masterPopoverController = nil;
}
@end
@@ -0,0 +1,14 @@
//
// MasterViewController.h
// iOS5Example
//
#import <UIKit/UIKit.h>
@class DetailViewController;
@interface MasterViewController : UITableViewController
@property (strong, nonatomic) DetailViewController *detailViewController;
@end
@@ -0,0 +1,116 @@
//
// MasterViewController.m
// iOS5Example
//
#import "MasterViewController.h"
#import "DetailViewController.h"
@implementation MasterViewController
@synthesize detailViewController = _detailViewController;
- (void)awakeFromNib
{
if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPad) {
self.clearsSelectionOnViewWillAppear = NO;
self.contentSizeForViewInPopover = CGSizeMake(320.0, 600.0);
}
[super awakeFromNib];
}
- (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
// Release any cached data, images, etc that aren't in use.
}
#pragma mark - View lifecycle
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
self.detailViewController = (DetailViewController *)[[self.splitViewController.viewControllers lastObject] topViewController];
if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPad) {
[self.tableView selectRowAtIndexPath:[NSIndexPath indexPathForRow:0 inSection:0] animated:NO scrollPosition:UITableViewScrollPositionMiddle];
}
}
- (void)viewDidUnload
{
[super viewDidUnload];
// Release any retained subviews of the main view.
// e.g. self.myOutlet = nil;
}
- (void)viewWillAppear:(BOOL)animated
{
[super viewWillAppear:animated];
}
- (void)viewDidAppear:(BOOL)animated
{
[super viewDidAppear:animated];
}
- (void)viewWillDisappear:(BOOL)animated
{
[super viewWillDisappear:animated];
}
- (void)viewDidDisappear:(BOOL)animated
{
[super viewDidDisappear:animated];
}
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
// Return YES for supported orientations
if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone) {
return (interfaceOrientation != UIInterfaceOrientationPortraitUpsideDown);
} else {
return YES;
}
}
/*
// Override to support conditional editing of the table view.
- (BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath
{
// Return NO if you do not want the specified item to be editable.
return YES;
}
*/
// Override to support editing the table view.
- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath
{
if (editingStyle == UITableViewCellEditingStyleDelete) {
// Delete the row from the data source.
[tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationFade];
} else if (editingStyle == UITableViewCellEditingStyleInsert) {
// Create a new instance of the appropriate class, insert it into the array, and add a new row to the table view.
}
}
/*
// Override to support rearranging the table view.
- (void)tableView:(UITableView *)tableView moveRowAtIndexPath:(NSIndexPath *)fromIndexPath toIndexPath:(NSIndexPath *)toIndexPath
{
}
*/
/*
// Override to support conditional rearranging of the table view.
- (BOOL)tableView:(UITableView *)tableView canMoveRowAtIndexPath:(NSIndexPath *)indexPath
{
// Return NO if you do not want the item to be re-orderable.
return YES;
}
*/
@end
@@ -0,0 +1,2 @@
/* Localized versions of Info.plist keys */
@@ -0,0 +1,130 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="1.0" toolsVersion="1926" systemVersion="11C36" targetRuntime="iOS.CocoaTouch.iPad" propertyAccessControl="none" initialViewController="5">
<dependencies>
<development defaultVersion="4200" identifier="xcode"/>
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="922"/>
</dependencies>
<scenes>
<scene sceneID="14">
<objects>
<placeholder placeholderIdentifier="IBFirstResponder" id="13" sceneMemberID="firstResponder"/>
<navigationController id="3" sceneMemberID="viewController">
<navigationBar key="navigationBar" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="scaleToFill" id="6">
<autoresizingMask key="autoresizingMask"/>
</navigationBar>
<connections>
<segue destination="19" kind="relationship" relationship="rootViewController" id="25"/>
</connections>
</navigationController>
</objects>
<point key="canvasLocation" x="432" y="-178"/>
</scene>
<scene sceneID="16">
<objects>
<placeholder placeholderIdentifier="IBFirstResponder" id="15" sceneMemberID="firstResponder"/>
<viewController storyboardIdentifier="" title="Detail" id="4" customClass="DetailViewController" sceneMemberID="viewController">
<view key="view" contentMode="scaleToFill" id="26">
<rect key="frame" x="0.0" y="64" width="703" height="704"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews>
<label clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleToFill" text="Detail view content goes here" textAlignment="center" lineBreakMode="tailTruncation" minimumFontSize="10" id="27">
<rect key="frame" x="20" y="341" width="663" height="21"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMinY="YES" flexibleMaxY="YES"/>
<color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
<fontDescription key="fontDescription" type="system" size="system"/>
<color key="textColor" cocoaTouchSystemColor="darkTextColor"/>
<nil key="highlightedColor"/>
</label>
</subviews>
<color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="calibratedWhite"/>
<simulatedOrientationMetrics key="simulatedOrientationMetrics" orientation="landscapeRight"/>
</view>
<toolbarItems/>
<navigationItem key="navigationItem" title="Detail" id="52"/>
<connections>
<outlet property="detailDescriptionLabel" destination="27" id="29"/>
</connections>
</viewController>
</objects>
<point key="canvasLocation" x="432" y="686"/>
</scene>
<scene sceneID="18">
<objects>
<placeholder placeholderIdentifier="IBFirstResponder" id="17" sceneMemberID="firstResponder"/>
<splitViewController id="5" sceneMemberID="viewController">
<toolbarItems/>
<simulatedStatusBarMetrics key="simulatedStatusBarMetrics" statusBarStyle="blackTranslucent"/>
<simulatedOrientationMetrics key="simulatedOrientationMetrics" orientation="landscapeRight"/>
<connections>
<segue destination="3" kind="relationship" relationship="masterViewController" id="9"/>
<segue destination="42" kind="relationship" relationship="detailViewController" id="53"/>
</connections>
</splitViewController>
</objects>
<point key="canvasLocation" x="-711" y="-178"/>
</scene>
<scene sceneID="24">
<objects>
<placeholder placeholderIdentifier="IBFirstResponder" id="23" sceneMemberID="firstResponder"/>
<tableViewController storyboardIdentifier="" title="Master" clearsSelectionOnViewWillAppear="NO" id="19" customClass="MasterViewController" sceneMemberID="viewController">
<tableView key="view" clipsSubviews="YES" contentMode="scaleToFill" alwaysBounceVertical="YES" dataMode="static" style="plain" rowHeight="44" sectionHeaderHeight="22" sectionFooterHeight="22" id="20">
<rect key="frame" x="0.0" y="64" width="320" height="704"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
<simulatedOrientationMetrics key="simulatedOrientationMetrics" orientation="landscapeRight"/>
<sections>
<tableViewSection id="33">
<cells>
<tableViewCell contentMode="scaleToFill" selectionStyle="blue" hidesAccessoryWhenEditing="NO" indentationLevel="1" indentationWidth="0.0" reuseIdentifier="Cell" textLabel="z13-93-fbN" style="IBUITableViewCellStyleDefault" id="34">
<rect key="frame" x="0.0" y="0.0" width="320" height="44"/>
<autoresizingMask key="autoresizingMask"/>
<view key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center">
<rect key="frame" x="0.0" y="0.0" width="768" height="43"/>
<autoresizingMask key="autoresizingMask"/>
<subviews>
<label opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" text="Detail" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="z13-93-fbN">
<rect key="frame" x="10" y="0.0" width="748" height="43"/>
<autoresizingMask key="autoresizingMask"/>
<color key="backgroundColor" red="1" green="1" blue="1" alpha="1" colorSpace="calibratedRGB"/>
<fontDescription key="fontDescription" type="boldSystem" pointSize="20"/>
<color key="textColor" cocoaTouchSystemColor="darkTextColor"/>
<color key="highlightedColor" red="1" green="1" blue="1" alpha="1" colorSpace="calibratedRGB"/>
</label>
</subviews>
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
</view>
</tableViewCell>
</cells>
</tableViewSection>
</sections>
<connections>
<outlet property="dataSource" destination="19" id="22"/>
<outlet property="delegate" destination="19" id="21"/>
</connections>
</tableView>
<navigationItem key="navigationItem" title="Master" id="39"/>
</tableViewController>
</objects>
<point key="canvasLocation" x="843" y="-179"/>
</scene>
<scene sceneID="50">
<objects>
<placeholder placeholderIdentifier="IBFirstResponder" id="49" userLabel="First Responder" sceneMemberID="firstResponder"/>
<navigationController id="42" sceneMemberID="viewController">
<navigationBar key="navigationBar" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="scaleToFill" id="43">
<autoresizingMask key="autoresizingMask"/>
</navigationBar>
<connections>
<segue destination="4" kind="relationship" relationship="rootViewController" id="51"/>
</connections>
</navigationController>
</objects>
<point key="canvasLocation" x="-390" y="686"/>
</scene>
</scenes>
<simulatedMetricsContainer key="defaultSimulatedMetrics">
<simulatedStatusBarMetrics key="statusBar" statusBarStyle="blackTranslucent"/>
<simulatedOrientationMetrics key="orientation"/>
<simulatedScreenMetrics key="destination"/>
</simulatedMetricsContainer>
</document>
@@ -0,0 +1,101 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="1.0" toolsVersion="1926" systemVersion="11C36" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" initialViewController="3">
<dependencies>
<development defaultVersion="4200" identifier="xcode"/>
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="922"/>
</dependencies>
<scenes>
<scene sceneID="11">
<objects>
<placeholder placeholderIdentifier="IBFirstResponder" id="10" sceneMemberID="firstResponder"/>
<navigationController id="3" sceneMemberID="viewController">
<navigationBar key="navigationBar" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="scaleToFill" id="4">
<autoresizingMask key="autoresizingMask"/>
</navigationBar>
<connections>
<segue destination="12" kind="relationship" relationship="rootViewController" id="19"/>
</connections>
</navigationController>
</objects>
<point key="canvasLocation" x="-1" y="64"/>
</scene>
<scene sceneID="18">
<objects>
<placeholder placeholderIdentifier="IBFirstResponder" id="17" sceneMemberID="firstResponder"/>
<tableViewController storyboardIdentifier="" title="Master" id="12" customClass="MasterViewController" sceneMemberID="viewController">
<tableView key="view" opaque="NO" clipsSubviews="YES" clearsContextBeforeDrawing="NO" contentMode="scaleToFill" alwaysBounceVertical="YES" dataMode="static" style="plain" rowHeight="44" sectionHeaderHeight="22" sectionFooterHeight="22" id="13">
<rect key="frame" x="0.0" y="64" width="320" height="416"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
<sections>
<tableViewSection id="29">
<cells>
<tableViewCell contentMode="scaleToFill" selectionStyle="blue" accessoryType="disclosureIndicator" hidesAccessoryWhenEditing="NO" indentationLevel="1" indentationWidth="0.0" reuseIdentifier="Cell" textLabel="CZe-l0-5K6" style="IBUITableViewCellStyleDefault" id="30">
<rect key="frame" x="0.0" y="0.0" width="320" height="44"/>
<autoresizingMask key="autoresizingMask"/>
<view key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center">
<rect key="frame" x="0.0" y="0.0" width="300" height="43"/>
<autoresizingMask key="autoresizingMask"/>
<subviews>
<label opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" text="Detail" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="CZe-l0-5K6">
<rect key="frame" x="10" y="0.0" width="280" height="43"/>
<autoresizingMask key="autoresizingMask"/>
<color key="backgroundColor" red="1" green="1" blue="1" alpha="1" colorSpace="calibratedRGB"/>
<fontDescription key="fontDescription" type="boldSystem" pointSize="20"/>
<color key="textColor" cocoaTouchSystemColor="darkTextColor"/>
<color key="highlightedColor" red="1" green="1" blue="1" alpha="1" colorSpace="calibratedRGB"/>
</label>
</subviews>
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
</view>
<connections>
<segue destination="21" kind="push" id="33"/>
</connections>
</tableViewCell>
</cells>
</tableViewSection>
</sections>
<connections>
<outlet property="dataSource" destination="12" id="16"/>
<outlet property="delegate" destination="12" id="15"/>
</connections>
</tableView>
<navigationItem key="navigationItem" title="Master" id="35"/>
</tableViewController>
</objects>
<point key="canvasLocation" x="455" y="64"/>
</scene>
<scene sceneID="24">
<objects>
<placeholder placeholderIdentifier="IBFirstResponder" id="23" sceneMemberID="firstResponder"/>
<viewController storyboardIdentifier="" title="Detail" id="21" customClass="DetailViewController" sceneMemberID="viewController">
<view key="view" contentMode="scaleToFill" id="22">
<rect key="frame" x="0.0" y="64" width="320" height="416"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
<subviews>
<label clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleToFill" text="Detail view content goes here" textAlignment="center" lineBreakMode="tailTruncation" minimumFontSize="10" id="27">
<rect key="frame" x="20" y="199" width="280" height="18"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMinY="YES" flexibleMaxY="YES"/>
<color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
<fontDescription key="fontDescription" type="system" size="system"/>
<color key="textColor" cocoaTouchSystemColor="darkTextColor"/>
<nil key="highlightedColor"/>
</label>
</subviews>
<color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="calibratedWhite"/>
</view>
<navigationItem key="navigationItem" title="Detail" id="26"/>
<connections>
<outlet property="detailDescriptionLabel" destination="27" id="28"/>
</connections>
</viewController>
</objects>
<point key="canvasLocation" x="924" y="64"/>
</scene>
</scenes>
<simulatedMetricsContainer key="defaultSimulatedMetrics">
<simulatedStatusBarMetrics key="statusBar"/>
<simulatedOrientationMetrics key="orientation"/>
<simulatedScreenMetrics key="destination"/>
</simulatedMetricsContainer>
</document>
@@ -0,0 +1,51 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>CFBundleDevelopmentRegion</key>
<string>en</string>
<key>CFBundleDisplayName</key>
<string>${PRODUCT_NAME}</string>
<key>CFBundleExecutable</key>
<string>${EXECUTABLE_NAME}</string>
<key>CFBundleIconFiles</key>
<array/>
<key>CFBundleIdentifier</key>
<string>com.mulle-kybernetik.ocmock.${PRODUCT_NAME:rfc1034identifier}</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundleName</key>
<string>${PRODUCT_NAME}</string>
<key>CFBundlePackageType</key>
<string>APPL</string>
<key>CFBundleShortVersionString</key>
<string>1.0</string>
<key>CFBundleSignature</key>
<string>????</string>
<key>CFBundleVersion</key>
<string>1.0</string>
<key>LSRequiresIPhoneOS</key>
<true/>
<key>UIMainStoryboardFile</key>
<string>MainStoryboard_iPhone</string>
<key>UIMainStoryboardFile~ipad</key>
<string>MainStoryboard_iPad</string>
<key>UIRequiredDeviceCapabilities</key>
<array>
<string>armv7</string>
</array>
<key>UISupportedInterfaceOrientations</key>
<array>
<string>UIInterfaceOrientationPortrait</string>
<string>UIInterfaceOrientationLandscapeLeft</string>
<string>UIInterfaceOrientationLandscapeRight</string>
</array>
<key>UISupportedInterfaceOrientations~ipad</key>
<array>
<string>UIInterfaceOrientationPortrait</string>
<string>UIInterfaceOrientationPortraitUpsideDown</string>
<string>UIInterfaceOrientationLandscapeLeft</string>
<string>UIInterfaceOrientationLandscapeRight</string>
</array>
</dict>
</plist>
@@ -0,0 +1,14 @@
//
// Prefix header for all source files of the 'iOS5Example' target in the 'iOS5Example' project
//
#import <Availability.h>
#ifndef __IPHONE_5_0
#warning "This project uses features only available in iOS SDK 5.0 and later."
#endif
#ifdef __OBJC__
#import <UIKit/UIKit.h>
#import <Foundation/Foundation.h>
#endif
@@ -0,0 +1,15 @@
//
// main.m
// iOS5Example
//
#import <UIKit/UIKit.h>
#import "AppDelegate.h"
int main(int argc, char *argv[])
{
@autoreleasepool {
return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));
}
}
@@ -0,0 +1,10 @@
//
// ProtocolTests.h
// iOS5Example
//
#import <SenTestingKit/SenTestingKit.h>
@interface ProtocolTests : SenTestCase
@end
@@ -0,0 +1,56 @@
//
// ProtocolTests.m
// iOS5Example
//
#import <OCMock/OCMock.h>
#import "ProtocolTests.h"
@protocol AuthenticationServiceProtocol
- (void)loginWithEmail:(NSString *)email andPassword:(NSString *)password;
@end
@interface Foo : NSObject
{
id<AuthenticationServiceProtocol> authService;
}
- (id)initWithAuthenticationService:(id<AuthenticationServiceProtocol>)anAuthService;
- (void)doStuff;
@end
@implementation Foo
- (id)initWithAuthenticationService:(id<AuthenticationServiceProtocol>)anAuthService
{
self = [super init];
authService = anAuthService;
return self;
}
- (void)doStuff
{
[authService loginWithEmail:@"x" andPassword:@"y"];
}
@end
@implementation ProtocolTests
- (void)testTheProtocol
{
id authService = [OCMockObject mockForProtocol:@protocol(AuthenticationServiceProtocol)];
id foo = [[Foo alloc] initWithAuthenticationService:authService];
[[authService expect] loginWithEmail:[OCMArg any] andPassword:[OCMArg any]];
[foo doStuff];
[authService verify];
}
@end
@@ -0,0 +1,2 @@
/* Localized versions of Info.plist keys */
@@ -0,0 +1,22 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>CFBundleDevelopmentRegion</key>
<string>en</string>
<key>CFBundleExecutable</key>
<string>${EXECUTABLE_NAME}</string>
<key>CFBundleIdentifier</key>
<string>com.mulle-kybernetik.ocmock.${PRODUCT_NAME:rfc1034identifier}</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundlePackageType</key>
<string>BNDL</string>
<key>CFBundleShortVersionString</key>
<string>1.0</string>
<key>CFBundleSignature</key>
<string>????</string>
<key>CFBundleVersion</key>
<string>1</string>
</dict>
</plist>
@@ -0,0 +1,10 @@
//
// iOS5ExampleTests.h
// iOS5ExampleTests
//
#import <SenTestingKit/SenTestingKit.h>
@interface iOS5ExampleTests : SenTestCase
@end
@@ -0,0 +1,47 @@
//
// iOS5ExampleTests.m
// iOS5ExampleTests
//
#import <OCMock/OCMock.h>
#import "MasterViewController.h"
#import "iOS5ExampleTests.h"
@implementation iOS5ExampleTests
- (void)setUp
{
[super setUp];
// Set-up code here.
}
- (void)tearDown
{
// Tear-down code here.
[super tearDown];
}
- (void)testMasterViewControllerDeletesItemsFromTableView
{
// Test set-up
MasterViewController *controller = [[MasterViewController alloc] init];
NSIndexPath *dummyIndexPath = [NSIndexPath indexPathWithIndex:3];
id tableViewMock = [OCMockObject mockForClass:[UITableView class]];
[[tableViewMock expect] deleteRowsAtIndexPaths:[NSArray arrayWithObject:dummyIndexPath] withRowAnimation:UITableViewRowAnimationFade];
// Invoke functionality to be tested
// If you want to see the test fail you can, for example, change the editing style to UITableViewCellEditingStyleNone. In
// that case the method in the controller does not make a call to the table view and the mock will raise an exception when
// verify is called further down.
[controller tableView:tableViewMock commitEditingStyle:UITableViewCellEditingStyleDelete forRowAtIndexPath:dummyIndexPath];
// Verify that expectations were met
[tableViewMock verify];
}
@end
@@ -0,0 +1,15 @@
//---------------------------------------------------------------------------------------
// $Id$
// Copyright (c) 2009 by Mulle Kybernetik. See License file for details.
//---------------------------------------------------------------------------------------
#import <Foundation/Foundation.h>
@class OCMockObserver;
@interface NSNotificationCenter(OCMAdditions)
- (void)addMockObserver:(OCMockObserver *)notificationObserver name:(NSString *)notificationName object:(id)notificationSender;
@end
@@ -0,0 +1,33 @@
//---------------------------------------------------------------------------------------
// $Id$
// Copyright (c) 2009-2010 by Mulle Kybernetik. See License file for details.
//---------------------------------------------------------------------------------------
#import <Foundation/Foundation.h>
@interface OCMArg : NSObject
// constraining arguments
+ (id)any;
+ (void *)anyPointer;
+ (id)isNil;
+ (id)isNotNil;
+ (id)isNotEqual:(id)value;
+ (id)checkWithSelector:(SEL)selector onObject:(id)anObject;
#if NS_BLOCKS_AVAILABLE
+ (id)checkWithBlock:(BOOL (^)(id))block;
#endif
// manipulating arguments
+ (id *)setTo:(id)value;
// internal use only
+ (id)resolveSpecialValues:(NSValue *)value;
@end
#define OCMOCK_ANY [OCMArg any]
#define OCMOCK_VALUE(variable) [NSValue value:&variable withObjCType:@encode(__typeof__(variable))]
@@ -0,0 +1,64 @@
//---------------------------------------------------------------------------------------
// $Id$
// Copyright (c) 2007-2010 by Mulle Kybernetik. See License file for details.
//---------------------------------------------------------------------------------------
#import <Foundation/Foundation.h>
@interface OCMConstraint : NSObject
+ (id)constraint;
- (BOOL)evaluate:(id)value;
// if you are looking for any, isNil, etc, they have moved to OCMArg
// try to use [OCMArg checkWith...] instead of the constraintWith... methods below
+ (id)constraintWithSelector:(SEL)aSelector onObject:(id)anObject;
+ (id)constraintWithSelector:(SEL)aSelector onObject:(id)anObject withValue:(id)aValue;
@end
@interface OCMAnyConstraint : OCMConstraint
@end
@interface OCMIsNilConstraint : OCMConstraint
@end
@interface OCMIsNotNilConstraint : OCMConstraint
@end
@interface OCMIsNotEqualConstraint : OCMConstraint
{
@public
id testValue;
}
@end
@interface OCMInvocationConstraint : OCMConstraint
{
@public
NSInvocation *invocation;
}
@end
#if NS_BLOCKS_AVAILABLE
@interface OCMBlockConstraint : OCMConstraint
{
BOOL (^block)(id);
}
- (id)initWithConstraintBlock:(BOOL (^)(id))block;
@end
#endif
#define CONSTRAINT(aSelector) [OCMConstraint constraintWithSelector:aSelector onObject:self]
#define CONSTRAINTV(aSelector, aValue) [OCMConstraint constraintWithSelector:aSelector onObject:self withValue:(aValue)]
@@ -0,0 +1,10 @@
//---------------------------------------------------------------------------------------
// $Id$
// Copyright (c) 2004-2008 by Mulle Kybernetik. See License file for details.
//---------------------------------------------------------------------------------------
#import <OCMock/OCMockObject.h>
#import <OCMock/OCMockRecorder.h>
#import <OCMock/OCMConstraint.h>
#import <OCMock/OCMArg.h>
#import <OCMock/NSNotificationCenter+OCMAdditions.h>
@@ -0,0 +1,43 @@
//---------------------------------------------------------------------------------------
// $Id$
// Copyright (c) 2004-2008 by Mulle Kybernetik. See License file for details.
//---------------------------------------------------------------------------------------
#import <Foundation/Foundation.h>
@interface OCMockObject : NSProxy
{
BOOL isNice;
BOOL expectationOrderMatters;
NSMutableArray *recorders;
NSMutableArray *expectations;
NSMutableArray *rejections;
NSMutableArray *exceptions;
}
+ (id)mockForClass:(Class)aClass;
+ (id)mockForProtocol:(Protocol *)aProtocol;
+ (id)partialMockForObject:(NSObject *)anObject;
+ (id)niceMockForClass:(Class)aClass;
+ (id)niceMockForProtocol:(Protocol *)aProtocol;
+ (id)observerMock;
- (id)init;
- (void)setExpectationOrderMatters:(BOOL)flag;
- (id)stub;
- (id)expect;
- (id)reject;
- (void)verify;
// internal use only
- (id)getNewRecorder;
- (BOOL)handleInvocation:(NSInvocation *)anInvocation;
- (void)handleUnRecordedInvocation:(NSInvocation *)anInvocation;
@end
@@ -0,0 +1,32 @@
//---------------------------------------------------------------------------------------
// $Id$
// Copyright (c) 2004-2010 by Mulle Kybernetik. See License file for details.
//---------------------------------------------------------------------------------------
#import <Foundation/Foundation.h>
@interface OCMockRecorder : NSProxy
{
id signatureResolver;
NSInvocation *recordedInvocation;
NSMutableArray *invocationHandlers;
}
- (id)initWithSignatureResolver:(id)anObject;
- (BOOL)matchesInvocation:(NSInvocation *)anInvocation;
- (void)releaseInvocation;
- (id)andReturn:(id)anObject;
- (id)andReturnValue:(NSValue *)aValue;
- (id)andThrow:(NSException *)anException;
- (id)andPost:(NSNotification *)aNotification;
- (id)andCall:(SEL)selector onObject:(id)anObject;
#if NS_BLOCKS_AVAILABLE
- (id)andDo:(void (^)(NSInvocation *))block;
#endif
- (id)andForwardToRealObject;
- (NSArray *)invocationHandlers;
@end