• 程序中读取可用内存

    iPhone/iPad的内存十分紧张,所以有时进行调试时可能需要读取当前可用内存。其实挺简单,见下列代码:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    #import <mach/mach.h>
    #import <mach/mach_host.h>

    @implementation Utils

    + (double)getAvailableMemory
    {
        vm_statistics_data_t vmStats;
        mach_msg_type_number_t infoCount = HOST_VM_INFO_COUNT;
        kern_return_t kernReturn = host_statistics(mach_host_self(), HOST_VM_INFO, (host_info_t)&vmStats, &infoCount);
       
        if (kernReturn != KERN_SUCCESS)
        {
            return NSNotFound;
        }
       
        return (vm_page_size * vmStats.free_count);
    }

    end

    使用方法更简单,比如:

    1
    NSLog(@"Available memory (KB) =  %f",[Utils getAvailableMemory]);
     
  • 开始学习iPhone编程之五 – Objective C / Cocoa / iPhone的内存管理

    随着iPhone SDK的发布,iPhone/iPod Touch被售出数以百万计(作者注:这是一篇以前的文章,现在iPhone/iPod Touch的销售数量远大于此数)而且App Store广受欢迎,越来越多的开发者开始进行iPhone及Cocoa Touch的开发。SDK设计精良而且很容易入门,最大的障碍来自于Apple选择作为OSX和iPhone开发的独特语言(其前身为NextStep):Object C。初看时,Object C非常丑陋而且与人们常用的基于C的语法(C, C++, ActionScript, JavaScript, Java, C#, GLSL等)并不相似。但一旦对其有所研究后,你会喜欢上它并明白其语法为何如此。

     

    大部分人初次接触Objective C/Cocoa开发时的最大困难是内存管理 – 当你最终理解了它是多么简单(尽管这可能需要通过几个项目)时,你就会明白这一切实际上是多么漂亮。实际上,我发现其非常实用,所以编写了一个C++类来实现类似功能(http://code.google.com/p/ofxmsaof/wiki/ofxObjCPointer).

     

    读文章 »