欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

MonkeyC的一些错误写法

程序员文章站 2022-03-02 12:15:30
...

之前接触过pebble和某国产智能穿戴的开发,再到现在搞的Garmin MonkeyC开发,个人感觉问题最少的就是pebble,运行效率也是最高,无奈倒闭了。
那么garmin和某国产手表的开发过程都是十分痛苦的,不是因为语言有多晦涩,而是模拟器运行正常,真机却跑不了,跑不了。下面就介绍一些坑:

注意这些写法在模拟器下都能正常跑通

如果想使用单例,不可以带类名

错误的写法:

static var _single = null;
static function Me(){
    if(Conf._single==null){
        Conf._single = new Conf();
    }
    return Conf._single;
}

正确的写法:

static var _single = null;
static function Me(){
    if(_single==null){
        _single = new Conf();
    }
    return _single;
}

如果想使用枚举, 请设置为单例模式

错误的写法:

class Enum{
        enum{
              TypeA,
              TypeB
        }
}
//其他类中调用
Enum.TypeA

正确的写法

class Enum{
    static var _single = null;
    static function Me(){
        if(_single==null){
            _single = new Enum();
        }
        return _single;
    }
    enum{
          TypeA,
          TypeB
    }
}
//其他类调用
Enum.Me().TypeA

在一个类的静态函数中, 如果调用同类的静态函数, 必须带类名

错误的写法:

static function A(){
    B();
}
static function B(){
}

正确的写法
错误的写法:

static function A(){
    Class.B();
}
static function B(){
}

delegate回收

在这种低功耗设备简化c代码下无法做监视者来传递信息, 这时候就用到代理, 比如把view的地址给到delegate, 来响应键盘事件, 不过当app stop时一定要删除delegate的依赖关系, 否则app无法有效回收内存, 会造成环式依赖, 导致内存溢出.

为什么开发公司不把模拟器环境做的和真机一样, 至少代码逻辑检查应该做到一样才对...太痛苦了