Mac OS/iOS
文章平均质量分 93
Horky
爱探索、爱技术!简单地快乐着!
展开
-
尝试一下GNU Guile
<br /> <br />参考Guile的Tutoria来创建一个带脚本支持的绘图程序:<br />http://www.gnu.org/software/guile/docs/guile-tut/tutorial.html<br />1.使用MacPorts安装guile和gnuplot<br /> sudo port install guile gnuplot<br />2. 以管道的方式来操作gnuplot,注意需要在start_gnuplot函数添加如下的设置:<br /> fprintf (原创 2010-12-01 23:13:00 · 5538 阅读 · 0 评论 -
[Objective-C]为现有对象增加额外的实例变量/数据
想到要如何为所有的对象增加实例变量吗? 使用Category可以很方便地为现有的类增加方法,但却无法直接增加实例变量(有为此使用查表法的,也算曲线救国吧)。不过从Mac OS X v10.6开始,系统提供了Associative References,这个问题就很容易解决了。我根据Objective-C Reference中的示例修改了一下,直接上代码了。重点是其中objc_setAs原创 2012-10-09 23:01:38 · 3442 阅读 · 0 评论 -
拦截MPMoviePlayerController的点击事件
为了解决在MPMovieController上添加一个和控制栏一起显示的按钮,特别研究了一下MPMoviePlayerController的结构 (controlStyle是default,为了便于查看,省去了部分输出):(lldb) po [m_view recursiveDescription](id) $1 = 0x179529f0 > | | |原创 2012-09-20 23:27:27 · 10425 阅读 · 6 评论 -
Objective-C中Extension与Category的使用
Objective-C 2.0增加了class extensions用于解决两个问题:允许一个对象可以拥有一个私有的interface,且可由编译器验证。支持一个公有只读,私有可写的属性。私有接口(Private Interface)Objective-C 2.0以前, 若要定义私有函数,通常是在实现文件中声明一个"Private" category:@interface My翻译 2012-09-18 23:22:04 · 12402 阅读 · 1 评论 -
【iOS/Mac OS】程序崩在objc_msgSend(),怎么办?
程序崩在objc_msgSend(),怎么办? 最可能的原因是,当你向一个已经释放的对象发送消息时,或者虽然指针是正确的,却被别的对象破坏了内容(比如内存越界),再或者使用了悬摆指针(dangling pointer)。偶尔的时候也会是因为内存错误导致运行时的数据结构被破坏,但通常问题还是在接收者本身。 无论用Debugger还是通过崩溃日志(crash log),都可以得到远比b翻译 2012-09-24 23:55:45 · 18355 阅读 · 3 评论 -
iOS:应用程序的线程安全性
本文在于说明iOS应用的Objective-C代码的线程安全性。先是简单介绍一下线程安全的基本知识,然后通过一个小例子来观察非线程安全代码,最后会稍稍介绍一个可以用来分析线程安全隐患的工具。1) 基础知识 (Threading Basics)当启动一个应用时,iOS会对应创建一个进程(process)和一块为之分配的内存。简单地说,一个应用进程的内存包括三个部分: (更详细翻译 2012-11-01 00:41:51 · 11372 阅读 · 4 评论 -
[Mac OS/iOS]反汇编工具Hopper分析Crash Log
在Mac OS下分析Crash Log有很多种方法,这里不是要说明如何分析的Crash Log, 主要是展示下Hopper的使用。 强大的IDA大家可能已经知道,但它的Mac OS版本又让人回到了DOS时代。幸运的是Mac OS有了一个小巧的替代品:Hopper, 基本上满足了工作上的反汇编的需要,包括伪代码以及控制流图(Control Flow Graph),支持ARM指令集并对Objectiv原创 2012-12-12 06:40:45 · 19073 阅读 · 1 评论 -
Twitter广告平台的私有API
Promoted Tweets是Twitter的一个广告平台。本文作者是发现在Twitter官方的应用中并没有显示一些广告,而决定分析Twitter是不是做了什么手脚。没有详细的步骤,只是可以了解一些工具的使用和Twitter的一个小动作。 Mac上的Twitter有些奇怪的行为: Timeline上的一些内容被过滤掉了. 下图就是一个对比,相较网页版本,其中"howabo翻译 2012-12-12 06:53:38 · 2622 阅读 · 0 评论 -
[iOS逆向工程] 在汇编语言调试中获取当前实例句柄
在分析Safari行为的时候想到要用objective-c的特性随时可以语义化的查看一下UIView的各种状态,比如在UIView方法内部设了个断点,想看一下当前视图结构。只要得到当前实例的句柄就可以了。查了一些资料,记录一下。函数参数的传递iOS Simulator里应用是跑在32bits模式下的(在Activity Monitor可以看到),依据>里关于Intel 32原创 2012-12-19 01:03:32 · 6507 阅读 · 5 评论 -
Objective-C的方法替换
Objective-C的方法替换(Method Replacement for Fun and Profit)本文将要讨论Objective-C中的方法替换(method replacement)和swizzling(移魂大法)。 重写类的方法(Overriding Methods)Overriding methods在任何面向对象语言中都很常见,主要用于子类化中。在子翻译 2013-01-23 00:08:44 · 12987 阅读 · 3 评论 -
混合使用Objective-C,C++和Objective-C++
之前有段时间,我参与了一项使用了C++库的Objective-C项目。写了一篇关于混编的文章,结果却出乎意料的成为Google搜索中关于Objective-C++的最靠前的结果之一。后来,Apple将基于LLVM的clang做为主选编译器。其作用之一就是可以保证Objective-C的演化,而GCC的进化却太慢了。之前文章就不太适用了,而且在这个过程,我也收到了一些回馈,这些都促使我写翻译 2012-09-02 23:42:59 · 64821 阅读 · 11 评论 -
懒人可以用Automator提高工作效率
转载请注明出处:http://blog.csdn.net/horkychenMac OS里除了Apple Script, 还有一个更简单的自动化工具Automator,恰当运用可以提高工作效率。 下面举一个简单的例子, 比如在Mac OS执行Android模拟器,不想用AVD再选对,而是想直接运行我想要的模拟器,可以在命令行执行: emulator -avd avd_na原创 2012-07-02 20:32:18 · 13418 阅读 · 0 评论 -
Cocos2D-HTML5开源2D游戏引擎
转自:http://www.programmer.com.cn/12198/文/林顺Cocos2D-HTML5是基于HTML5规范集的Cocos2D引擎的分支,于2012年5月发布。Cocos2D-HTML5的作者林顺将在本文中介绍Cocos2D-HTML5的框架、API、跨平台能力以及强大的性能。Cocos2D-HTML5是Cocos2D系列引擎随着互联网技术演进而产生的一个分支转载 2012-07-03 23:08:37 · 3052 阅读 · 0 评论 -
在XCode中运用CPPUnit
Use CPPUnit with XCode 1. Download cppunti from sourceforge 2. Compile and install ./configure make install 3. Create new C++ Tool project and add source files in cppunit/examples/simple except SimplePlugIn.cpp 4. Add the library libcppunit.d原创 2010-10-28 22:00:00 · 2808 阅读 · 0 评论 -
[BoUML]生成代码
此处简单介绍一下运用免费的UML工具Bouml生成C++代码。在BoUML中的各个视图和组件基本有以下的结构: Project -> View -> Diagrams -> Components 每一个组件,原创 2011-10-07 13:24:21 · 2910 阅读 · 0 评论 -
检查程序对动态库的依赖
转载请注明出处:http://blog.csdn.net/horkychen测试程序时会出现找不到指定的库或库函数的错误,表示某个依赖库不存在或版本不正确。如果使用的是动态加载的动态库所依赖的包不存在,如果程序没有做好异常处理的话,会让你很难定位到问题。比如GDI+库。假设一个程序A,调用了动态库B,而B链接了GDI+,这时运行在Windows 2000上时,系统里没有GDI+的库,会导致A不原创 2011-11-02 00:16:46 · 7928 阅读 · 2 评论 -
iOS上Web开发之远端调试
转载请注明出处:http://blog.csdn.net/horkychen浏览器上的Debugger,基本由JavaScript写成,有兴趣可以下个FireBug Lite研究一下。PC端Debug很方便,也有远程调试,手机上的浏览器也有支持,原理相同。今天下午了解了一下iOS上Safari上远端调试的资料,还挺多。归纳一下: 1. 工具 iWebInspector原创 2012-06-08 22:14:15 · 8344 阅读 · 1 评论 -
编写小程序查看CSDN博客信息(ASIHTTPRequest+TFHpple)
转载请注明出处:http://blog.csdn.net/horkychen作为一个iOS练习,使用ASIHTTPRequest+TFHpple写了个小程序读取CSDN博客的已读等信息。其中ASIHTTPRequest负责发送HTTP Request以获取博客主页,然后使用TFHpple (XPath)解析出指定的HTML元素,然后读取相关的信息。注意,关于两个库的使用,已经有不少资料原创 2012-06-19 21:48:49 · 4104 阅读 · 0 评论 -
XCode小技巧
1.用TODO做个标记代码就是这么一行: // TODO: xxxxxx. 然后看看你的Symbol list吧.XCode 4已经不支持这样做了,不过可以使用 #pragma mark或// MARK: 来做相似的标记。 另外Eclipse也有类似的功能,它提供一个视图用于方便用户查看所有的TODO项目.XCode的实现方式不如Eclipse那么直观,但也够用。原创 2011-05-18 21:32:00 · 9979 阅读 · 1 评论 -
小心,Mac OS也有类似万能密码!
上次系统故障,差点要重装系统。好在找到了一个方法同大家分享。如果你有了一台苹果电脑,但还不清楚如何设置Firmware password(类似BIOS密码,默认是空的),那你还是要了解一下。开机按Alt不松,进RecoveryHD, 再进终端,输入resetpassword,然后你就可以随便改掉系统用户的密码。所以有空在启用下吧! *当你忘记了系统用户密码,这个也能救你。原创 2012-07-03 13:03:55 · 7141 阅读 · 0 评论 -
为XCode 4加速
转载请注明出处:http://blog.csdn.net/horkychen 1. XCode 4打开时,自动加载上次的工程,需要较长时间。 这是因为Lion提供了新功能让应用程序恢复上次关闭时的状态。如果仅是临时不希望下去打开时不要打开现在使用的项目,可以在退出使用CMD+Q+OPTION代替CMD+Q。 如果默认不希望再打开,就可以使用下面的指令:原创 2012-07-12 22:50:28 · 8668 阅读 · 2 评论 -
XCODE 4.0.2 & 4.1分布式编译
转载请注明出处:http://blog.csdn.net/horkychen(译注:我一直思考如何把旁边的电脑也用来一起编译一个大工程,今天发现了这份资料。先翻译一下,找时间实践。)不知道是什么原因,XCode 4.x似乎不支持分布式编译了。虽然可以通过定义distcc服务器启用分布式编译,但基本上还是在本地工作。仔细看看编译日志:setenv DISTCC_H翻译 2012-07-12 23:46:20 · 4621 阅读 · 1 评论 -
[WebKit]遭遇Mac OS私有API
WebKit并不是完全开源的, Apple封装了一部代码在一个静态库(libWebKitSystemInterfaceXXXX.a)中,并没有提供源代码。而且不同版本的OS (包括iOS),会有特定的版本。这就是我今天从分析中了解到的, 觉得过程比较有趣,记录一下。1. 在WebKit中有这样一段源代码 (Laguage.mm):static String httpSt原创 2013-05-09 22:49:55 · 3777 阅读 · 2 评论