### 🛠️ Crash Analysis Report
**App Name:** StealthMaster
**Bundle ID:** io.highcore.stealthmaster
**App Version:** 1.12.44 (Build 248)
**OS Version:** iOS / iPadOS 26.4 (Build 23E244)
**Device Model:** iPad15,3
**Crash Timestamp:** 2026-08-05 11:47:19 +0800
#### 1. Issue Summary
* **Exception Type:** EXC_CRASH (SIGABRT)
* **Exception Name:** NSInvalidArgumentException
* **Triggering Thread:** Thread 18
* **Exception Message:**
```text
-[<dynamic class> productsRequest:didReceiveResponse:]: unrecognized selector sent to instance 0x1514a6be0
```
#### 2. Root Cause Analysis
The crash occurred during an In-App Purchase (StoreKit) request flow.
When the SKProductsRequest received a response from Apple servers, it attempted to invoke the delegate method productsRequest:didReceiveResponse: on its assigned delegate object. However, the delegate instance at address 0x1514a6be0 does not implement this selector (or the delegate pointer was set to an incorrect object / dangling reference), resulting in an unrecognized selector runtime exception.
#### 3. Stack Trace Excerpt
```text
0 CoreFoundation ___exceptionPreprocess + 164
1 libobjc.A.dylib objc_exception_throw + 88
2 CoreFoundation -[NSObject(NSObject) doesNotRecognizeSelector:] + 144
3 CoreFoundation ___forwarding___ + 1588
4 CoreFoundation _CF_forwarding_prep_0 + 96
5 StoreKit -[SKProductsRequest _handleStatus:] + 120
...
```
#### 4. Action Items / Recommendations for Fix
1. **Verify SKProductsRequestDelegate Implementation:**
* Ensure that the object assigned as request.delegate conforms to SKProductsRequestDelegate and explicitly implements:
```objc
- (void)productsRequest:(SKProductsRequest *)request didReceiveResponse:(SKProductsResponse *)response;
```
2. **Check Delegate Lifecycle & Ownership:**
* Check if the delegate object is being deallocated prematurely or if a non-delegate object is accidentally being assigned as the delegate for SKProductsRequest.
3. **Defensive Check:**
* Before setting or invoking delegate callbacks, verify the object's class type or check [delegate respondsToSelector:] to prevent unrecognized selector crashes.