【发布时间】:2015-03-20 11:13:19
【问题描述】:
我正在尝试了解 NSHTTPCookieStorage 的内部结构,以便能够调整一些方法以从 Safari 的 cookie 存储中获得单独的存储,据我所知,这是任何非 hacky 方式都不可能实现的:
我在这里找到了头文件:
/System/Library/Frameworks/Foundation.framework/Versions/C/Headers/NSHTTPCookieStorage.h
这并没有给我太多信息,只是实现可能应该在
/System/Library/Frameworks/Foundation.framework/Versions/C/Foundation
我查看了那个库中的符号名称,但我只发现这些提到 NSHTTPCookieStorage:
$ nm /System/Library/Frameworks/Foundation.framework/Versions/C/Foundation | grep -i cookiestorage
000000000030cbb5 S $ld$add$os10.5$_OBJC_CLASS_$_NSHTTPCookieStorage
000000000030cbb6 S $ld$add$os10.5$_OBJC_METACLASS_$_NSHTTPCookieStorage
000000000030cbb7 S $ld$add$os10.6$_OBJC_CLASS_$_NSHTTPCookieStorage
000000000030cbb8 S $ld$add$os10.6$_OBJC_METACLASS_$_NSHTTPCookieStorage
000000000030cbb9 S $ld$add$os10.7$_OBJC_CLASS_$_NSHTTPCookieStorage
000000000030cbba S $ld$add$os10.7$_OBJC_METACLASS_$_NSHTTPCookieStorage
000000000030cbbb S $ld$add$os10.8$_OBJC_CLASS_$_NSHTTPCookieStorage
000000000030cbbc S $ld$add$os10.8$_OBJC_METACLASS_$_NSHTTPCookieStorage
000000000030cbbd S $ld$add$os10.9$_OBJC_CLASS_$_NSHTTPCookieStorage
000000000030cbbe S $ld$add$os10.9$_OBJC_METACLASS_$_NSHTTPCookieStorage
I _OBJC_CLASS_$_NSHTTPCookieStorage (indirect for _OBJC_CLASS_$_NSHTTPCookieStorage)
U _OBJC_CLASS_$_NSHTTPCookieStorage
I _OBJC_METACLASS_$_NSHTTPCookieStorage (indirect for _OBJC_METACLASS_$_NSHTTPCookieStorage)
U _OBJC_METACLASS_$_NSHTTPCookieStorage
根本没有方法。对该库进行类转储,这是我能找到的所有提到的“Cookie”:
# class-dump /System/Library/Frameworks/Foundation.framework/Versions/C/Foundation | grep -i cookie
@interface NSHTTPCookie (NSHTTPCookiePortCoding)
事情开始变得有些绝望,所以我调用了字符串!
$ strings /System/Library/Frameworks/Foundation.framework/Versions/C/Foundation | grep -i cookie
setHTTPShouldHandleCookies:
NSHTTPCookiePortCoding
使用方法调配,我在NSHTTPCookieStorage 的sharedHTTPCookieStorage 周围包装了一个方法,然后我尝试使用 XCode 调试器输入它,看看我是否至少可以得到该方法的程序集,但 XCode 会跳转即使我告诉它进入,也可以直接调用该类的方法。
看起来这个班级甚至都不在那里。该类在哪里定义?我怎样才能进入它的内部?
【问题讨论】:
标签: objective-c macos cocoa