Giter Site home page Giter Site logo

Comments (10)

YPLiang19 avatar YPLiang19 commented on September 27, 2024

@zhaoxuezhi 可以通过MFContext的- (void)setObject:(MFValue *)value forKeyedSubscript:(NSObject *)key; 动态扩展所需要的C函数。

from mango.

zhaoxuezhi avatar zhaoxuezhi commented on September 27, 2024

您好:
1、如何在 demo.mg 中动态扩展 C 函数,例如我所提的问题,修复线上的信号量 bug ?
2、关于:在MangoFix中注入全局对象,没有get 到具体的使用场景,是要预先在 OC 代码中设置,还是在 demo.mg 中去添加 ?
关于以上,希望能有参考代码。非常感谢!!

from mango.

YPLiang19 avatar YPLiang19 commented on September 27, 2024

@zhaoxuezhi 将需要的C函数用block进行封装,然后将block注入到MangoFix作为全局变量,然后调用block。

from mango.

zhaoxuezhi avatar zhaoxuezhi commented on September 27, 2024

@YPLiang19 根据您的提示发现有崩溃,以下为代码及崩溃信息截图,帮忙看下什么原因造成的 ?

class HLJSearchConfigApi : HLJClientBaseRequest {

- (void)requestSearchRecommond {

    // 定义 block
    block semaphoreBlock = ^(dispatch_semaphore_t se){
        dispatch_semaphore_signal(se);
    };

    // 获取 MFContext 变量
    MFValue *value = MFValue.valueInstanceWithBlock:(semaphoreBlock);
    AppDelegate *delegate = UIApplication.sharedApplication.delegate;
    MFContext *context = delegate.mfContext;

    // 设置全局变量
    context.setObject:forKeyedSubscript:(value,@"dispatch_semaphore_signal");

    // 调用 block, semaphore 在类初始化时已初始化
    semaphoreBlock(self.semaphore);
}

}
20190524151114
20190524150428
image

from mango.

YPLiang19 avatar YPLiang19 commented on September 27, 2024

@zhaoxuezhi 预埋要在APP中预埋。

from mango.

zhaoxuezhi avatar zhaoxuezhi commented on September 27, 2024

@YPLiang19 预埋是 OK 的。
有个疑问 - (void)setObject:(MFValue *)value forKeyedSubscript:(NSObject *)key 这个方法的设计初衷就是要在 APP 中执行的吗 ? 我在 demo.mg 中使用了该方法,设置和数据读取都是 ok 的, 推荐这样写吗 ? 是否安全 ?

// 设置全局变量

class HLJNewSearchResultViewController : BaseViewController {

- (void)beginNewSearch {

    //  获取  MFContext
    AppDelegate *delegate = UIApplication.sharedApplication.delegate;
    MFContext *context = delegate.mfContext;

    // 设置全局变量
    MFValue *value = MFValue.valueInstanceWithObject:(@"测试 MF 插入");
    context.setObject:forKeyedSubscript:(value,@"setTestValue");

    // 回调原方法  
    self.ORGbeginNewSearch();
}

}
`
// 读取全局变量
class HLJProductDetailViewController : BaseViewController {

- (void)viewDidLoad {

   //  获取  MFContext
    AppDelegate *delegate = UIApplication.sharedApplication.delegate;
    MFContext *context = delegate.mfContext;

   // 读取全局变量
    MFValue *value = context.objectForKeyedSubscript:(@"setTestValue");
    NSLog(@"value = " + value.objectValue + @"\n");

  // 回调原方法 
    self.ORGviewDidLoad();
}

}

from mango.

YPLiang19 avatar YPLiang19 commented on September 27, 2024

在mg文件中可以使用,但是无法注入C函数

from mango.

zhaoxuezhi avatar zhaoxuezhi commented on September 27, 2024

@YPLiang19 OK,非常感谢!!

from mango.

YPLiang19 avatar YPLiang19 commented on September 27, 2024

@zhaoxuezhi 建议升级到1.1.9, 1.1.9添加了大量的GCD API,其中就包括dispatch_semaphore相关的API

from mango.

zhaoxuezhi avatar zhaoxuezhi commented on September 27, 2024

@YPLiang19 赞 !

from mango.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.