> ## Documentation Index
> Fetch the complete documentation index at: https://docs.basset.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# methodOwners

> Whether a watched method still runs the code its framework shipped, or something replaced it while the process was running

Reads each watched method's implementation address against the process's
mapped images. One reading per method, taken once when the instrument
activates.

| | |
| - | - |
| [Delivery](/instruments/metadata) | reading, once |
| Mechanism | reflection |
| [Requires](/instruments/metadata) | iOS 17+, basset 0.1.1+ |

Real output from `basset request get`, captured against a running app:

```
CAPTURED                  ELAPSED  INSTRUMENT

launch 3262696169962734033
2026-08-23T14:38:03.806Z  +0.0s    runtime.methodOwners(method)
├─ methodClass                  UIViewController
├─ methodName                   viewWillAppear:
├─ implementationInMappedImage  true
├─ ownedByDeclaringImage        false
└─ imageName                    libMainThreadChecker.dylib
2026-08-23T14:38:03.807Z  +0.0s    runtime.methodOwners(method)
├─ methodClass                  UIApplication
├─ methodName                   sendEvent:
├─ implementationInMappedImage  true
├─ ownedByDeclaringImage        false
└─ imageName                    UIKit
2026-08-23T14:38:03.807Z  +0.0s    runtime.methodOwners(method)
├─ methodClass                  NSObject
├─ methodName                   forwardInvocation:
├─ implementationInMappedImage  true
├─ ownedByDeclaringImage        true
└─ imageName                    libobjc.A.dylib
```

`viewWillAppear:` and `sendEvent:` resolve to `libMainThreadChecker.dylib`
and `UIKit` rather than the class that declares them —
`ownedByDeclaringImage: false` is what that replacement looks like from
outside.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.