ios_xi
ios_xi
  • 发布:2015-06-17 14:48
  • 更新:2016-05-05 17:09
  • 阅读:1743

js调用 原生 自定义对象 不成功

分类:Native.js

import <Foundation/Foundation.h>

// 定义协议
@protocol NjsHelloEvent <NSObject>
@required
-(void) onEventInvoked:(NSString*)name;
@end
// -------------------------------------------------------------
// 定义类NjsHello

@interface NjsHello : NSObject {
NSString _name;
id<NjsHelloEvent > _delegate;
}
@property (nonatomic,strong) NSString
name;
@property (nonatomic,strong) id delegate;
-(void)updateName:(NSString*)newname;
-(void)setEventObserver:(id<NjsHelloEvent >)delegate;
-(void)test;
+(void)testCount;
@end

import "NjsHello.h"

// 实现类NjsHello
@implementation NjsHello

@synthesize name=_name;

-(void)updateName:(NSString*)newname{
_name = [newname copy];
NSLog(@"%@",_name);
}
-(void)setEventObserver:(id<NjsHelloEvent >)delegate{
_delegate = delegate;
}
-(void)test{
NSLog(@"My name is: %@",_name);
[[self delegate]onEventInvoked:_name];
}

+(void)testCount{
NSLog( @"Static test count" );
}
@end

这个是 自定义的对象 NjsHello 这基本都是 复制粘贴原生里面的代码!

在JS 里面有一个按钮 点击触发 orderBack
function orderBack() {
//plus.order.BackFunction( function( result ) {},function(result){});
switch ( plus.os.name ) {
case "Android":
// Android平台: plus.android.
plus.android.runtimeMainActivity().finish();
break;
case "iOS":
// iOS平台: plus.ios.

// plus.ios.runtimeMainActivity().finish();

        testOC();  

        break;  
    default:  
        // 其它平台  
        break;  
}  

}

function testOC()
{
alert(1);
// 导入测试类NjsHello
var NjsHello = plus.ios.importClass("NjsHello");
alert(NjsHello);
// 创建对象的实例
var hello = new NjsHello();
alert(hello);
alert(22);
}

alert(1) 是能够弹出来,
而 alert(NjsHello); 弹出来显示是 null

求大神解决!!

2015-06-17 14:48 负责人:无 分享
已邀请:
DCloud_IOS_XTY

DCloud_IOS_XTY

NjsHello这个写到了哪?

  • ios_xi (作者)

    NjsHello 不就是 在xcdoe 里面 定义了一个对象么? 放在项目根目录底下的

    2015-06-17 15:56

  • ios_xi (作者)

    请问下是不是 还需要导入那个 .a 文件才行???

    2015-06-17 16:12

  • DCloud_IOS_XTY

    哪个.a 你的代码要包含在执行文件中才可以的

    2015-06-17 16:16

  • ios_xi (作者)

    回复 DCloud_IOS_XTY:有具体要哪个.a 文件么? 插件式的开发 我是可以的

    2015-06-17 17:18

turen

turen

同问 问题解决了么

2***@qq.com

2***@qq.com

请问这个问题有人能帮忙一下吗,我将NjsHello.h和NjsHello.m直接放在项目的根目录下,但是var NjsHello = plus.ios.importClass("NjsHello");执行这句话之后NjsHello为null。一直搞不明白为什么会是null呢?哪里出了错?

下边是index.html
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8"/>
<meta name="viewport" content="initial-scale=1.0, maximum-scale=1.0, user-scalable=no"/>
<title>iOS Native.js</title>
<script type="text/javascript">
// 监听plusready事件
document.addEventListener( "plusready", function(){
var NjsHello = plus.ios.importClass("NjsHello");
console.log( "NjsHello="+NjsHello );
}, false );
</script>
</head>
<body>
</body>
</html>

该问题目前已经被锁定, 无法添加新回复