相关疑难解决方法(0)

发送到Objective-C中的对象的消息是否可以被监视或打印出来?

可能重复:
Objective-C中的拦截方法调用
如何记录iOS应用程序中使用的所有方法

例如,UIViewControlleriOS中的对象在向用户显示其视图之前会收到许多消息:

  1. viewWillAppear
  2. viewWillLayoutSubviews
  3. viewDidLayoutSubviews
  4. viewDidAppear
  5. ...

因为框架的源代码是不可见的,我们必须依赖书籍或博客,或者是否有办法打印或监控发送到该对象的所有消息(1)Objective-C,或(2)任何工具?

xcode objective-c ios

10
推荐指数
2
解决办法
3863
查看次数

当我在iPhone模拟器中运行应用程序时,如何查看调用的每个方法?

我真的希望看到在iPhone模拟器中运行我的应用程序时调用/发送的每个方法,委托,通知等.我认为正确的地方是调试器,但我找不到合适的设置.

我的目标是在后台看到所有发生的事情,例如,我向UITableView添加一行或从我的UINavigationController中按下"后退"按钮.

这将有助于弄清楚当应用程序中的某些内容发生时,或者当用户按下按钮,更改视图等时要使用的委托.

是否有可能获得此信息?

iphone

7
推荐指数
2
解决办法
3014
查看次数

如何静态转储在Cocoa App中调用的所有ObjC方法?

假设我有一个基于Cocoa的Mac或iOS应用程序.我想在我的应用程序的源代码 我的应用程序的二进制文件上运行静态分析器,以检索其中调用的所有Objective-C方法的列表.有没有可以做到这一点的工具?

几点:

  1. 我正在寻找静态解决方案.我不是在寻找动态解决方案.

  2. 可以对二进制代码或源代码运行的东西是可以接受的.

  3. 理想情况下,输出只是一个大规模的Objective-C方法列表,如:

    …
    -[MyClass foo]
    …
    +[NSMutableString stringWithCapacity:]
    …
    -[NSString length]
    …
    
    (如果它没有减少那么酷)

  4. 如果存在其他类型的符号(C函数,静态变量等),那很好.

  5. 我熟悉class-dump,但是AFAIK,它将声明的Classes转储到二进制文件中,而不是二进制文件中的被调用方法.那不是我想要的.如果我错了,你可以用类转储这样做,请纠正我.

  6. 我不完全确定这是可行的.所以,如果不是,那也是一个很好的答案.:)

macos cocoa objective-c ios

6
推荐指数
2
解决办法
2601
查看次数

lldb objc_msg在OS X上发送跟踪

我正在追踪一个OS X应用程序,我希望可以在iOS上找到这样的方式:

lldb Xcode:错误:'printf'不是有效命令

有办法这样做吗?我试过了

expr -- (void)printf("[%s, %s]\n",(char *) object_getClassName(*(long*)($esp+4)), (char *) *(long *)($esp+8) )
Run Code Online (Sandbox Code Playgroud)

我认为OS X使用的是64位寄存器.所以这个命令不起作用(实际上,它不起作用).我该怎么写这个命令?或者有一个简单的方法来做同样的事情?只是跟踪调用的类和方法

debugging macos lldb

1
推荐指数
1
解决办法
1386
查看次数

标签 统计

ios ×2

macos ×2

objective-c ×2

cocoa ×1

debugging ×1

iphone ×1

lldb ×1

xcode ×1