Skip to content
This repository was archived by the owner on Aug 31, 2021. It is now read-only.

Commit 93e1535

Browse files
[[ iOS 7.1 Support ]] Updated reviphone to use DVTiPhoneSimulatorRemoteClient to launch the iOS simulator.
1 parent 1bad8ca commit 93e1535

File tree

6 files changed

+479
-28
lines changed

6 files changed

+479
-28
lines changed

libexternalv1/include/external.h

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -579,6 +579,12 @@ MCError MCContextDefaultCard(MCObjectRef *r_default_card);
579579

580580
MCError MCRunOnMainThread(MCThreadCallback callback, void *state, MCRunOnMainThreadOptions options);
581581

582+
////////////////////////////////////////////////////////////////////////////////
583+
584+
// MM-2014-03-18: [[ iOS 7.1 Support ]] Added new WaitRun and WaitBreak functions required by reviphone external for iOS 7.1 support.
585+
MCError MCWaitRun(void);
586+
MCError MCWaitBreak(void);
587+
582588
////////////////////////////////////////////////////////////////////////////////
583589

584590
MCError MCObjectResolve(const char *chunk, MCObjectRef *r_object);

libexternalv1/src/external.c

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -86,6 +86,15 @@ typedef struct MCExternalInterface
8686
MCError (*object_retain)(MCObjectRef object);
8787
MCError (*object_release)(MCObjectRef object);
8888
MCError (*object_dispatch)(MCObjectRef object, MCDispatchType type, const char *message, MCVariableRef *argv, uint32_t argc, MCDispatchStatus *r_status);
89+
90+
/////////
91+
92+
// MM-2014-03-18: [[ iOS 7.1 Support ]] Added new WaitRun and WaitBreak functions required by reviphone external for iOS 7.1 support.
93+
MCError (*wait_run)(void *unused, unsigned int options);
94+
MCError (*wait_break)(void *unused, unsigned int options);
95+
96+
/////////
97+
8998
} MCExternalInterface;
9099

91100
typedef struct MCExternalInfo
@@ -279,6 +288,19 @@ MCError MCRunOnMainThread(MCThreadCallback callback, void *state, MCRunOnMainThr
279288
return s_interface -> engine_run_on_main_thread(callback, state, options);
280289
}
281290

291+
//////////
292+
// MM-2014-03-18: [[ iOS 7.1 Support ]] Added new WaitRun and WaitBreak functions required by reviphone external for iOS 7.1 support.
293+
294+
MCError MCWaitRun(void)
295+
{
296+
return s_interface -> wait_run(nil, 0);
297+
}
298+
299+
MCError MCWaitBreak(void)
300+
{
301+
return s_interface -> wait_break(nil, 0);
302+
}
303+
282304
////////////////////////////////////////////////////////////////////////////////
283305

284306
const char *MCErrorToString(MCError p_error)

revmobile/reviphone.xcodeproj/project.pbxproj

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,7 @@
5353

5454
/* Begin PBXFileReference section */
5555
3CE9FF2A113D4DA9002F594F /* iPhoneSimulatorRemoteClient.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = iPhoneSimulatorRemoteClient.h; path = src/iPhoneSimulatorRemoteClient.h; sourceTree = "<group>"; };
56+
4CAA4CEA18D3400400EFEC4B /* DVTiPhoneSimulatorRemoteClient.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = DVTiPhoneSimulatorRemoteClient.h; path = src/DVTiPhoneSimulatorRemoteClient.h; sourceTree = "<group>"; };
5657
4D8C22191212A2F800DA8A58 /* reviphoneproxy.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = reviphoneproxy.mm; path = src/reviphoneproxy.mm; sourceTree = "<group>"; };
5758
4D8C22211212A72200DA8A58 /* reviphoneproxy */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = reviphoneproxy; sourceTree = BUILT_PRODUCTS_DIR; };
5859
4D8F6A26113D13510056ED41 /* reviphone.bundle */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = reviphone.bundle; sourceTree = BUILT_PRODUCTS_DIR; };
@@ -119,6 +120,7 @@
119120
4D8F6A78113D13F80056ED41 /* Source */ = {
120121
isa = PBXGroup;
121122
children = (
123+
4CAA4CEA18D3400400EFEC4B /* DVTiPhoneSimulatorRemoteClient.h */,
122124
3CE9FF2A113D4DA9002F594F /* iPhoneSimulatorRemoteClient.h */,
123125
4D8F6A80113D141F0056ED41 /* reviphone.mm */,
124126
4D8C22191212A2F800DA8A58 /* reviphoneproxy.mm */,
@@ -277,6 +279,7 @@
277279
4D8C22231212A72300DA8A58 /* Debug */ = {
278280
isa = XCBuildConfiguration;
279281
buildSettings = {
282+
ARCHS = x86_64;
280283
GCC_ENABLE_FIX_AND_CONTINUE = YES;
281284
OTHER_LDFLAGS = (
282285
"-framework",
@@ -291,6 +294,7 @@
291294
4D8C22241212A72300DA8A58 /* Release */ = {
292295
isa = XCBuildConfiguration;
293296
buildSettings = {
297+
ARCHS = x86_64;
294298
GCC_ENABLE_FIX_AND_CONTINUE = YES;
295299
OTHER_LDFLAGS = (
296300
"-framework",
Lines changed: 312 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,312 @@
1+
/* Copyright (C) 2003-2013 Runtime Revolution Ltd.
2+
3+
This file is part of LiveCode.
4+
5+
LiveCode is free software; you can redistribute it and/or modify it under
6+
the terms of the GNU General Public License v3 as published by the Free
7+
Software Foundation.
8+
9+
LiveCode is distributed in the hope that it will be useful, but WITHOUT ANY
10+
WARRANTY; without even the implied warranty of MERCHANTABILITY or
11+
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
12+
for more details.
13+
14+
You should have received a copy of the GNU General Public License
15+
along with LiveCode. If not see <http://www.gnu.org/licenses/>. */
16+
17+
#import <Cocoa/Cocoa.h>
18+
19+
@class DTiPhoneSimulatorApplicationSpecifier;
20+
@class DTiPhoneSimulatorSession;
21+
@class DTiPhoneSimulatorSessionConfig;
22+
@class DTiPhoneSimulatorSystemRoot;
23+
@class DVTiPhoneSimulatorMessenger;
24+
25+
@class DVTDispatchLock;
26+
@class DVTConfinementServiceConnection;
27+
@class DVTTask;
28+
29+
@protocol DTiPhoneSimulatorSessionDelegate
30+
- (void)session:(DTiPhoneSimulatorSession*)session didEndWithError:(NSError*)error;
31+
- (void)session:(DTiPhoneSimulatorSession*)session didStart:(BOOL)started withError:(NSError*)error;
32+
@end
33+
34+
@protocol OS_dispatch_source
35+
@end
36+
37+
@protocol OS_dispatch_queue
38+
@end
39+
40+
//////////////////////////////////////////////////////////////////////
41+
42+
#pragma mark Blocks
43+
44+
typedef void (^CDUnknownBlockType)(void); // return type and parameters are unknown
45+
46+
#pragma mark -
47+
48+
//
49+
// File: Developer/Platforms/iPhoneSimulator.platform/Developer/Library/PrivateFrameworks/DVTiPhoneSimulatorRemoteClient.framework/Versions/A/DVTiPhoneSimulatorRemoteClient
50+
//
51+
// Arch: x86_64
52+
// Current version: 12.0.0
53+
// Compatibility version: 1.0.0
54+
// Source version: 5052.0.0.0.0
55+
// Minimum Mac OS X version: 10.8.0
56+
// SDK version: 10.9.0
57+
//
58+
// Objective-C Garbage Collection: Unsupported
59+
//
60+
// Run path: @loader_path/../../../../PrivateFrameworks/
61+
// = Developer/Platforms/iPhoneSimulator.platform/Developer/Library/PrivateFrameworks
62+
63+
@protocol NSCopying
64+
- (id)copyWithZone:(struct _NSZone *)arg1;
65+
@end
66+
67+
@interface DVTiPhoneSimulatorMessenger : NSObject
68+
{
69+
DTiPhoneSimulatorSession *_session;
70+
CDUnknownBlockType _readyMessageHandler;
71+
CDUnknownBlockType _runningMessageHandler;
72+
CDUnknownBlockType _appDidLaunchMessageHandler;
73+
CDUnknownBlockType _appDidQuitMessageHandler;
74+
CDUnknownBlockType _appPIDExitedMessageHandler;
75+
CDUnknownBlockType _toolDidLaunchMessageHandler;
76+
}
77+
78+
+ (id)messengerForSession:(id)arg1 withConnection:(id)arg2;
79+
+ (id)messengerForSession:(id)arg1;
80+
@property(copy, nonatomic) CDUnknownBlockType toolDidLaunchMessageHandler; // @synthesize toolDidLaunchMessageHandler=_toolDidLaunchMessageHandler;
81+
@property(copy, nonatomic) CDUnknownBlockType appPIDExitedMessageHandler; // @synthesize appPIDExitedMessageHandler=_appPIDExitedMessageHandler;
82+
@property(copy, nonatomic) CDUnknownBlockType appDidQuitMessageHandler; // @synthesize appDidQuitMessageHandler=_appDidQuitMessageHandler;
83+
@property(copy, nonatomic) CDUnknownBlockType appDidLaunchMessageHandler; // @synthesize appDidLaunchMessageHandler=_appDidLaunchMessageHandler;
84+
@property(copy, nonatomic) CDUnknownBlockType runningMessageHandler; // @synthesize runningMessageHandler=_runningMessageHandler;
85+
@property(copy, nonatomic) CDUnknownBlockType readyMessageHandler; // @synthesize readyMessageHandler=_readyMessageHandler;
86+
@property(readonly) DTiPhoneSimulatorSession *session; // @synthesize session=_session;
87+
//- (void).cxx_destruct;
88+
- (void)doUbiquityFetchEvent;
89+
- (void)doFetchEventForPID:(int)arg1;
90+
- (void)backgroundAllApps:(int)arg1;
91+
- (void)startSimulatorToolSessionWithParameters:(id)arg1;
92+
- (void)stopSimulatingLocation;
93+
- (void)startSimulatingLocationWithLatitude:(id)arg1 longitute:(id)arg2;
94+
- (void)endSimulatorSessionWithPID:(int)arg1;
95+
- (void)startSimulatorSessionWithRequestInfo:(id)arg1;
96+
- (void)clearAllMessageHandlers;
97+
- (void)waitPID:(int)arg1 withAppPIDExitedMessagedHandler:(CDUnknownBlockType)arg2;
98+
- (void)disconnectFromService;
99+
- (BOOL)connectToServiceWithSessionOnLaunch:(BOOL)arg1 simulatorPID:(int *)arg2 error:(id *)arg3;
100+
- (id)initWithSession:(id)arg1;
101+
102+
@end
103+
104+
@interface DVTiPhoneSimulatorLocalMessenger : DVTiPhoneSimulatorMessenger
105+
{
106+
BOOL _appTerminationMessageSent;
107+
NSObject<OS_dispatch_source> *_pidDispatchSource;
108+
DVTTask *_simTask;
109+
}
110+
111+
//- (void).cxx_destruct;
112+
- (void)doUbiquityFetchEvent;
113+
- (void)doFetchEventForPID:(int)arg1;
114+
- (void)backgroundAllApps:(int)arg1;
115+
- (void)_handleSimulatorToolDidLaunchMessage:(id)arg1;
116+
- (void)setToolDidLaunchMessageHandler:(CDUnknownBlockType)arg1;
117+
- (void)waitPID:(int)arg1 withAppPIDExitedMessagedHandler:(CDUnknownBlockType)arg2;
118+
- (void)_handleSimulatorAppDidQuitMessage:(id)arg1;
119+
- (void)setAppDidQuitMessageHandler:(CDUnknownBlockType)arg1;
120+
- (void)_handleSimulatorAppDidLaunchMessage:(id)arg1;
121+
- (void)setAppDidLaunchMessageHandler:(CDUnknownBlockType)arg1;
122+
- (void)_handleSimulatorRunningMessage:(id)arg1;
123+
- (void)setRunningMessageHandler:(CDUnknownBlockType)arg1;
124+
- (void)_handleSimulatorReadyMessage:(id)arg1;
125+
- (void)setReadyMessageHandler:(CDUnknownBlockType)arg1;
126+
- (void)startSimulatorToolSessionWithParameters:(id)arg1;
127+
- (void)stopSimulatingLocation;
128+
- (void)startSimulatingLocationWithLatitude:(id)arg1 longitute:(id)arg2;
129+
- (void)endSimulatorSessionWithPID:(int)arg1;
130+
- (void)startSimulatorSessionWithRequestInfo:(id)arg1;
131+
- (void)clearAllMessageHandlers;
132+
- (void)disconnectFromService;
133+
- (BOOL)connectToServiceWithSessionOnLaunch:(BOOL)arg1 simulatorPID:(int *)arg2 error:(id *)arg3;
134+
- (void)_enableObserver:(BOOL)arg1 forName:(id)arg2 selector:(SEL)arg3;
135+
136+
@end
137+
138+
@interface DVTiPhoneSimulatorRemoteMessenger : DVTiPhoneSimulatorMessenger
139+
{
140+
unsigned long long _commandTag;
141+
NSObject<OS_dispatch_queue> *_responseQueue;
142+
DVTDispatchLock *_awaitingLock;
143+
NSMutableDictionary *_awaitingSemaphores;
144+
NSMutableDictionary *_awaitingResponses;
145+
NSMutableSet *_waitingAppPIDs;
146+
DVTConfinementServiceConnection *_connection;
147+
}
148+
149+
@property(readonly) DVTConfinementServiceConnection *connection; // @synthesize connection=_connection;
150+
//- (void).cxx_destruct;
151+
- (void)handleNotificationResponse:(id)arg1;
152+
- (void)waitPID:(int)arg1 withAppPIDExitedMessagedHandler:(CDUnknownBlockType)arg2;
153+
- (void)startSimulatorToolSessionWithParameters:(id)arg1;
154+
- (void)stopSimulatingLocation;
155+
- (void)startSimulatingLocationWithLatitude:(id)arg1 longitute:(id)arg2;
156+
- (void)endSimulatorSessionWithPID:(int)arg1;
157+
- (void)startSimulatorSessionWithRequestInfo:(id)arg1;
158+
- (void)disconnectFromService;
159+
- (BOOL)connectToServiceWithSessionOnLaunch:(BOOL)arg1 simulatorPID:(int *)arg2 error:(id *)arg3;
160+
- (BOOL)sendTaggedRequest:(id)arg1 awaitingResponse:(id *)arg2 error:(id *)arg3;
161+
- (id)nextCommandTag;
162+
- (id)awaitResponseWithTag:(id)arg1 error:(id *)arg2;
163+
- (void)enqueueResponse:(id)arg1 withTag:(id)arg2 error:(id)arg3;
164+
- (BOOL)sendRequest:(id)arg1 withTag:(id)arg2 error:(id *)arg3;
165+
- (id)initWithSession:(id)arg1 connection:(id)arg2;
166+
167+
@end
168+
169+
@interface DTiPhoneSimulatorSession : NSObject
170+
{
171+
int _simulatedApplicationPID;
172+
int _simulatorPID;
173+
NSString *_uuid;
174+
id <DTiPhoneSimulatorSessionDelegate> _delegate;
175+
NSString *_simulatedAppPath;
176+
long long _sessionLifecycleProgress;
177+
NSTimer *_timeoutTimer;
178+
DTiPhoneSimulatorSessionConfig *_sessionConfig;
179+
DVTiPhoneSimulatorMessenger *_messenger;
180+
}
181+
182+
@property(retain) DVTiPhoneSimulatorMessenger *messenger; // @synthesize messenger=_messenger;
183+
@property(copy, nonatomic) DTiPhoneSimulatorSessionConfig *sessionConfig; // @synthesize sessionConfig=_sessionConfig;
184+
@property(retain, nonatomic) NSTimer *timeoutTimer; // @synthesize timeoutTimer=_timeoutTimer;
185+
@property(nonatomic) long long sessionLifecycleProgress; // @synthesize sessionLifecycleProgress=_sessionLifecycleProgress;
186+
@property int simulatorPID; // @synthesize simulatorPID=_simulatorPID;
187+
@property(copy) NSString *simulatedAppPath; // @synthesize simulatedAppPath=_simulatedAppPath;
188+
//@property int simulatedApplicationPID; // @synthesize simulatedApplicationPID=_simulatedApplicationPID;
189+
@property(retain, nonatomic) id <DTiPhoneSimulatorSessionDelegate> delegate; // @synthesize delegate=_delegate;
190+
@property(copy, nonatomic) NSString *uuid; // @synthesize uuid=_uuid;
191+
//- (void).cxx_destruct;
192+
- (void)doUbiquityFetchEvent;
193+
- (void)doFetchEventForPID:(int)arg1;
194+
- (void)backgroundAllApps:(int)arg1;
195+
- (id)_invalidConfigError;
196+
- (void)_endSimulatorSession;
197+
- (void)_callDelegateResponseFromSessionEndedInfo:(id)arg1;
198+
- (void)_callDelegateResponseFromSessionStartedInfo:(id)arg1;
199+
- (id)_sessionStartRequestInfoFromConfig:(id)arg1 withError:(id *)arg2;
200+
- (BOOL)_startToolSessionInSimulatorWithError:(id *)arg1;
201+
- (BOOL)_startApplicationSessionInSimulatorWithError:(id *)arg1;
202+
- (BOOL)_startBasicSessionInSimulatorWithError:(id *)arg1;
203+
- (BOOL)_startSessionInSimulatorWithError:(id *)arg1;
204+
- (BOOL)_handleSessionEndedInSimulator:(id)arg1 notification:(id)arg2;
205+
- (void)_handleSessionStartedWithSim:(id)arg1;
206+
- (void)_handleSessionStartedInSimulator:(id)arg1;
207+
- (void)_handleSimulatorReadyMessage:(id)arg1;
208+
- (void)_timeoutElapsed:(id)arg1;
209+
- (BOOL)attachedToTargetWithConfig:(id)arg1 error:(id *)arg2;
210+
- (void)stopLocationSimulation;
211+
- (void)simulateLocationWithLatitude:(id)arg1 longitude:(id)arg2;
212+
- (void)requestEndWithTimeout:(double)arg1;
213+
- (BOOL)requestStartWithConfig:(id)arg1 timeout:(double)arg2 error:(id *)arg3;
214+
- (BOOL)_setUpSimulatorMessengerWithConfig:(id)arg1 error:(id *)arg2;
215+
- (id)description;
216+
- (void)dealloc;
217+
- (id)init;
218+
219+
@end
220+
221+
@interface DTiPhoneSimulatorSessionConfig : NSObject <NSCopying>
222+
{
223+
BOOL _launchForBackgroundFetch;
224+
BOOL _simulatedApplicationShouldWaitForDebugger;
225+
NSString *_localizedClientName;
226+
DTiPhoneSimulatorSystemRoot *_simulatedSystemRoot;
227+
NSString *_simulatedDeviceInfoName;
228+
NSNumber *_simulatedDeviceFamily;
229+
NSString *_simulatedArchitecture;
230+
NSNumber *_simulatedDisplayHeight;
231+
NSNumber *_simulatedDisplayScale;
232+
DTiPhoneSimulatorApplicationSpecifier *_applicationToSimulateOnStart;
233+
NSNumber *_pid;
234+
NSArray *_simulatedApplicationLaunchArgs;
235+
NSDictionary *_simulatedApplicationLaunchEnvironment;
236+
NSString *_simulatedApplicationStdOutPath;
237+
NSString *_simulatedApplicationStdErrPath;
238+
NSFileHandle *_stdinFileHandle;
239+
NSFileHandle *_stdoutFileHandle;
240+
NSFileHandle *_stderrFileHandle;
241+
id _confinementService;
242+
}
243+
244+
+ (id)displayNameForDeviceFamily:(id)arg1;
245+
@property(retain) id confinementService; // @synthesize confinementService=_confinementService;
246+
@property(retain) NSFileHandle *stderrFileHandle; // @synthesize stderrFileHandle=_stderrFileHandle;
247+
@property(retain) NSFileHandle *stdoutFileHandle; // @synthesize stdoutFileHandle=_stdoutFileHandle;
248+
@property(retain) NSFileHandle *stdinFileHandle; // @synthesize stdinFileHandle=_stdinFileHandle;
249+
@property(copy) NSString *simulatedApplicationStdErrPath; // @synthesize simulatedApplicationStdErrPath=_simulatedApplicationStdErrPath;
250+
@property(copy) NSString *simulatedApplicationStdOutPath; // @synthesize simulatedApplicationStdOutPath=_simulatedApplicationStdOutPath;
251+
@property BOOL simulatedApplicationShouldWaitForDebugger; // @synthesize simulatedApplicationShouldWaitForDebugger=_simulatedApplicationShouldWaitForDebugger;
252+
@property(copy) NSDictionary *simulatedApplicationLaunchEnvironment; // @synthesize simulatedApplicationLaunchEnvironment=_simulatedApplicationLaunchEnvironment;
253+
@property(copy) NSArray *simulatedApplicationLaunchArgs; // @synthesize simulatedApplicationLaunchArgs=_simulatedApplicationLaunchArgs;
254+
@property(copy) NSNumber *pid; // @synthesize pid=_pid;
255+
@property(copy) DTiPhoneSimulatorApplicationSpecifier *applicationToSimulateOnStart; // @synthesize applicationToSimulateOnStart=_applicationToSimulateOnStart;
256+
@property(copy) NSNumber *simulatedDisplayScale; // @synthesize simulatedDisplayScale=_simulatedDisplayScale;
257+
@property(copy) NSNumber *simulatedDisplayHeight; // @synthesize simulatedDisplayHeight=_simulatedDisplayHeight;
258+
@property(copy) NSString *simulatedArchitecture; // @synthesize simulatedArchitecture=_simulatedArchitecture;
259+
@property(copy) NSNumber *simulatedDeviceFamily; // @synthesize simulatedDeviceFamily=_simulatedDeviceFamily;
260+
@property(retain) NSString *simulatedDeviceInfoName; // @synthesize simulatedDeviceInfoName=_simulatedDeviceInfoName;
261+
@property(copy) DTiPhoneSimulatorSystemRoot *simulatedSystemRoot; // @synthesize simulatedSystemRoot=_simulatedSystemRoot;
262+
@property(copy) NSString *localizedClientName; // @synthesize localizedClientName=_localizedClientName;
263+
@property BOOL launchForBackgroundFetch; // @synthesize launchForBackgroundFetch=_launchForBackgroundFetch;
264+
//- (void).cxx_destruct;
265+
- (id)description;
266+
- (id)copyWithZone:(struct _NSZone *)arg1;
267+
- (id)init;
268+
269+
@end
270+
271+
@interface DTiPhoneSimulatorSystemRoot : NSObject <NSCopying>
272+
{
273+
NSString *sdkRootPath;
274+
NSString *sdkVersion;
275+
NSString *sdkDisplayName;
276+
}
277+
278+
+ (id)rootWithSDKVersion:(id)arg1;
279+
+ (id)rootWithSDKPath:(id)arg1;
280+
+ (id)defaultRoot;
281+
+ (id)knownRoots;
282+
+ (void)initialize;
283+
@property(copy) NSString *sdkDisplayName; // @synthesize sdkDisplayName;
284+
@property(copy) NSString *sdkVersion; // @synthesize sdkVersion;
285+
@property(copy) NSString *sdkRootPath; // @synthesize sdkRootPath;
286+
//- (void).cxx_destruct;
287+
- (id)description;
288+
- (long long)compare:(id)arg1;
289+
- (id)copyWithZone:(struct _NSZone *)arg1;
290+
- (BOOL)isEqual:(id)arg1;
291+
- (id)initWithSDKPath:(id)arg1;
292+
293+
@end
294+
295+
@interface DTiPhoneSimulatorApplicationSpecifier : NSObject <NSCopying>
296+
{
297+
NSString *appPath;
298+
NSString *bundleID;
299+
NSString *toolPath;
300+
}
301+
302+
+ (id)specifierWithToolPath:(id)arg1;
303+
+ (id)specifierWithApplicationBundleIdentifier:(id)arg1;
304+
+ (id)specifierWithApplicationPath:(id)arg1;
305+
@property(copy, nonatomic) NSString *toolPath; // @synthesize toolPath;
306+
@property(copy, nonatomic) NSString *bundleID; // @synthesize bundleID;
307+
@property(copy, nonatomic) NSString *appPath; // @synthesize appPath;
308+
//- (void).cxx_destruct;
309+
- (id)description;
310+
- (id)copyWithZone:(struct _NSZone *)arg1;
311+
312+
@end

0 commit comments

Comments
 (0)