导航:首页 > 源码编译 > iosjs编译器

iosjs编译器

发布时间:2022-09-24 00:15:28

A. iOS的jsbridge怎么做

您好,苹果手机的系统一旦升级后 是无法进行降级的

B. ios swift用什么编译

使用GNU计划下面的gcc和g++……不过貌似是Linux平台的,而且不是一步到位,而是先做目标文件再做成可执行的。不过总的来说这种方式显然更能加强理解,所以是适合新手的学习向编译器。
也可以直接使用IDE自带的编译器,更简便,也有调试功能。

C. 如何在IOS平台上使用js直接调用OC方法

本例子是为了让大家能快速开发出OC调用JS功能的一个简单的例子。

1、准备一个本地化的html网页,如jsIOS.html

<script type="text/javaScript">
function postStr(){
return document.getElementById("text1").value;
//return "javaScript返回值啦";
}
</script>

2、将此html文件放到项目代码目录里面,如图:

3、拖一个UIWebView控件和UIButton控件到xxxViewController对应的.xib或.storyboard视图的UIView上;
在xxxViewController的.h文件中分别声明UIWebView类型变量和UIButton类型的变量,以及一个按钮点击事件(并且跟视图里面的控件连线),
并且添加一个UIWebViewDelegate类型的委托。<㖞�"http://www.2cto.com/kf/ware/vc/" target="_blank" class="keylink">vcD4KPHA++CjxwIGNsYXNzPQ=="p1">
#import

@interface ViewController : UIViewController
@property(nonatomic,retain) IBOutlet UIWebView *webview;
@property(nonatomic,retain) IBOutlet UIButton *button;
-(IBAction)IOS_JS:(id)sender;
@end

4、在xxxViewController.m文件中实现通过点击事件,调用javaScript的方法并取得返回值。
代码如下:

#import "ViewController.h"

@interface ViewController ()

@end

@implementation ViewController
@synthesize webview;

- (void)viewDidLoad
{
[super viewDidLoad];
//设置webView
webview.backgroundColor = [UIColor clearColor];
//webview.scalesPageToFit =YES;
webview.delegate =self;
//找到jsIOS.html文件的路径
NSString *basePath = [[NSBundle mainBundle]bundlePath];
NSString *helpHtmlPath = [basePath :@"jsIOS.html"];
NSURL *url = [NSURL fileURLWithPath:helpHtmlPath];
//加载本地html文件
[webview loadRequest:[NSURLRequest requestWithURL:url]];
}

/*
* 点击事件
* 调用javaScript的方法postStr()并取得返回值
* 输出返回值到控制台
*/
-(IBAction)IOS_JS:(id)sender
{
NSString *str = [self.webview :@"postStr();"];
NSLog(@"JS返回值:%@",str);
}

- (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
}
@end

D. 如何在IOS平台上使用js直接调用OC方法

在Cocos2d-JS v3.0 RC2中,与android上js调用Java一样,Cocos2d-JS也提供了在iOS和Mac上js直接调用Objective-C的方法,示例代码如下:
var ojb = jsb.reflection.callStaticMethod(className, methodNmae, arg1, arg2, .....);
在jsb.reflection.callStaticMethod方法中,我们通过传入OC的类名,方法名,参数就可以直接调用OC的静态方法,并且可以获得OC方法的返回值。

参数中的类名,只需要传入OC中的类名即可,与Java不同,类名并不需要路径。比如你在工程底下新建一个类NativeOcClass,只要你将他引入工程,那么他的类名就是NativeOcClass,你并不需要传入它的路径。
import <Foundation/Foundation.h>
@interface NativeOcClass : NSObject
+(BOOL)callNativeUIWithTitle:(NSString *) title andContent:(NSString *)content;
@end
方法
js到OC的反射仅支持OC中类的静态方法。
方法名比较要需要注意,我们需要传入完整的方法名,特别是当某个方法带有参数的时候,你需要将他的:也带上。根据上面的例子。此时的方法名字是callNativeUIWithTitle:andContent:,不要漏掉了他们之间的:。
如果是没有参数的函数,那么他就不需要:,如下代码,他的方法名是callNativeWithReturnString,由于没有参数,他不需要:,跟OC的method写法一致。
+(NSString *)callNativeWithReturnString;
使用示例
下面的示例代码将调用上面NativeOcClass的方法,在js层我们只需要这样调用:
var ret = jsb.reflection.callStaticMethod("NativeOcClass",
"callNativeUIWithTitle:andContent:",
"cocos2d-js",
"Yes! you call a Native UI from Reflection");
这里是这个方法在OC的实现,可以看到是弹出一个native的对话框。并把title和content设置成你传入的参数,并返回一个boolean类型的返回值。
+(BOOL)callNativeUIWithTitle:(NSString *) title andContent:(NSString *)content{
UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:title message:content delegate:self cancelButtonTitle:@"Cancel" otherButtonTitles:@"OK", nil];
[alertView show];
return true;
}
此时,你就可以在ret中接受到从OC传回的返回值(true)了。
注意
在OC的实现中,如果方法的参数需要使用float、int、bool的,请使用如下类型进行转换:
float,int 请使用NSNumber类型
bool请使用BOOL类型。
例如下面代码,我们传入2个浮点数,然后计算他们的合并返回,我们使用NSNumber而不是int、float去作为参数类型。
+(float) addTwoNumber:(NSNumber *)num1 and:(NSNumber *)num2{
float result = [num1 floatValue]+[num2 floatValue];
return result;
}
目前参数和返回值支持 int, float, bool, string,其余的类型暂时不支持。

E. 如何在IOS平台上使用js直接调用OC方法

在Cocos2d-JS v3.0 RC2中,与Android上js调用Java一样,Cocos2d-JS也提供了在iOS和Mac上js直接调用Objective-C的方法,示例代码如下:

1 var ojb = jsb.reflection.callStaticMethod(className, methodNmae, arg1, arg2, .....);
在 jsb.reflection.callStaticMethod 方法中,我们通过传入OC的类名,方法名,参数就可以直接调用OC的静态方法,并且可以获得OC方法的返回值。


•参数中的类名,只需要传入OC中的类名即可,与Java不同,类名并不需要路径。比如你在工程底下新建一个类 NativeOcClass ,只要你将他引入工程,那么他的类名就是 NativeOcClass ,你并不需要传入它的路径。
1 import <Foundation/Foundation.h> @interface NativeOcClass : NSObject +( BOOL )callNativeUIWithTitle:(NSString *) title andContent:(NSString *)content; @end
方法
•js到OC的反射仅支持OC中类的静态方法。
•方法名比较要需要注意,我们需要传入完整的方法名,特别是当某个方法带有参数的时候,你需要将他的:也带上。根据上面的例子。此时的方法名字是callNativeUIWithTitle:andContent:,不要漏掉了他们之间的:。
•如果是没有参数的函数,那么他就不需要:,如下代码,他的方法名是 callNativeWithReturnString ,由于没有参数,他不需要:,跟OC的method写法一致。
1 +(NSString *)callNativeWithReturnString;
使用示例
•下面的示例代码将调用上面 NativeOcClass 的方法,在js层我们只需要这样调用:
1234 var ret = jsb.reflection.callStaticMethod( "NativeOcClass" , "callNativeUIWithTitle:andContent:" , "cocos2d-js" , "Yes! you call a Native UI from Reflection" );
•这里是这个方法在OC的实现,可以看到是弹出一个native的对话框。并把 title 和 content 设置成你传入的参数,并返回一个boolean类型的返回值。
123 +( BOOL )callNativeUIWithTitle:(NSString *) title andContent:(NSString *)content{ UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:title message:content delegate:self cancelButtonTitle:@ "Cancel" otherButtonTitles:@ "OK" , nil]; [alertView show]; return true ; }
•此时,你就可以在 ret 中接受到从OC传回的返回值(true)了。
注意
在OC的实现中,如果方法的参数需要使用float、int、bool的,请使用如下类型进行转换:

•float,int 请使用NSNumber类型
•bool请使用BOOL类型。
•例如下面代码,我们传入2个浮点数,然后计算他们的合并返回,我们使用NSNumber而不是int、float去作为参数类型。
1 +( float ) addTwoNumber:(NSNumber *)num1 and:(NSNumber *)num2{ float result = [num1 floatValue]+[num2 floatValue]; return result;}
•目前参数和返回值支持 int, float, bool, string,其余的类型暂时不支持。

F. 能把js打包给安卓和ios调用吗

能的。安卓和ios可以用js进行调试的,因为js是属于通用的计算机程序语言,在调用速度上JS省掉了编译的步骤,执行过程更轻量速度更快。所以能把js打包给安卓和ios调用。

G. 苹果手机上有什么软件可以进行编程的吗

没越狱放弃吧, 苹果不允许任何第三方app能够有编码功能。不过还是可以实现的:
1.js python等有云编译器, 可以在网页上写代码,运行。 docker什么的很好用。
2. 越狱, 可以装gcc什么的, 还可以用terminal

H. 如何用js调用ios

基本流程:

先看一下Web中,我们给h1标签添加一个onclick事件,让它在被点击之后,修改当前的url。
Web中的HTML代码:

<html>
<head>
<script>

function getInfo(name)
{
window.location = "/getInfo/"+name;
}

</script>

</head>

<body>
<h1 onclick="getInfo('why')">Name</h1>
</body>

</html>

iOS中,先拖拽WebView,访问localhost,然后通过WebView的委托事件监听url跳转操作,并且把跳转截取下来。
也就是说,在onclick的时候,普通浏览器灰跳转到那个url,但是在iOS的这个WebView里面,这个跳转会被拦截,
用这种方式可以巧妙地实现JS调用iOS的原生代码:

//
// DWViewController.m
// DareWayApp
//
// Created by why on 14-6-3.
// Copyright (c) 2014年 DareWay. All rights reserved.
//

#import "DWViewController.h"

@interface DWViewController ()

@property (weak, nonatomic) IBOutlet UIWebView *myWebview; // 主页面

@end

@implementation DWViewController

- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.

// 适配iOS6的状态栏
if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 7) {
_myWebview.frame = CGRectMake(0,20,self.view.frame.size.width,self.view.frame.size.height-20);
}

// 加载制定的URL
NSURL *url =[NSURL URLWithString:@"http://localhost"];
NSURLRequest *request =[NSURLRequest requestWithURL:url];
[_myWebview setDelegate:self];
[_myWebview loadRequest:request];

}

// 网页中的每一个请求都会被触发
-(BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType
{

// 每次跳转时候判断URL

if([request.mainDocumentURL.relativePath isEqualToString:@"/getInfo/why"])
{
NSLog(@"why");
return NO;
}

return YES;
}

- (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}

@end

I. iOS上有什么软件可以做web前端开发,编译HTML、CSS和JavaScript

vs code已经支持ios可以直接安装使用。

J. 如何在iOS和Android上选择一个JavaScript 引擎进行应用开发

这是个比较专业的问题
首先我推荐一个:react native,facebook推出的一个跨平台解决方案,去年推出了iOS版,手机淘宝的有一个模块“猜你喜欢”就是用react native实现的,效果还不错,另外今年9月份,facebook推出了android版,大家不妨试一下,这里针对于webapp,做了一个比对:

相对于Webapp的优势:
不用Webview,彻底摆脱了Webview让人不爽的交互和性能问题;
有较强的扩展性,这是因为Native端提供的是基本控件,JS可以自由组合使用;
可以直接使用Native原生的“牛逼”动画(在FB Group这个app里面,面板滑出带一点果冻弹动,面板基于某个点展开这种动画随处可见,这种动画用Native code来做小菜一碟,但是用Web来做就难上加难)。
相对于Native app的优势:
可以通过服务端远程更新JS,进而直接更新app的页面;
相对于Webapp和Native的劣势:
扩展性仍然远远不如web,也远远不如直接写Native code;
从Native到Web,要做很多概念转换,势必造成双方都要妥协。最终web要用一套CSS的阉割版,Native要费劲地把这个阉割版转换成native原生的表达方式(比如iOS的Constraint\origin\Center等属性)。

另外我以前在CocoaChina上收藏过的一个帖子,整理了许多iOS和Android跨平台解决方案,感觉很不错,现在拿出来分享给大家,希望对题主有帮助。

1、jQuery Mobile

jQuery Mobile是jQuery 在手机上和平板设备上的版本。jQuery Mobile 不仅会给主流移动平台带来jQuery核心库,而且会发布一个完整统一的jQuery移动UI框架。支持全球主流的移动平台。jQuery Mobile文档比较全面,同时有在线工具帮你快速创建自己中意的UI风格。

技术需求:HTML,CSS,jQuery
平台支持: 绝大多数移动浏览器

2、Corona SDK(使用Lua语言):

Corona SDK的优点:

稳定;支持硬件加速、GPS、指南针及照相机等;支持与Map、Facebook、OpenFient、GameCenter的集成;内建的物理集成;Lua语言比较容易学习;
已经有了一些很不错的应用,至少能够证明这个SDK是可以做出优秀应用来的;不错的社区支持。

Corona SDK不太好的地方:

只支持iOS和Android;Lua语言不是面向对象的;每年都要交授权费(99美元/年)。

另外还有其他的一些补充,比如:

对于Corona SDK不支持的第三方SDK没法自己去集成;编译项目的时候需要把代码上传到Corona的服务器上去编译,不能在本地直接编译;无法扩展Corona的功能;物理模块还有一些缺陷。

3、Airplay SDK(后来更名为Marmalade,不少大的公司在使用Airplay SDK,尤其适用于进行2D/3D游戏的开发)

目前使用Marmalade的游戏有《割绳子》、《植物大战僵尸》、《你猜我画》、Build 'n' Bash 3D、Catch the Monkey、Need for Speed Shift以及WorkSnug Pro等多款游戏。

Airplay SDK文档中还包含多个示例。“感觉受到限制”的开发者还可以在Airplay SDK上进行扩展。开发者需要对C++比较熟悉。

4、Appcelerator(Titanium)

Appcelerator允许使用HTML/Javascript来开发原生app,开发者可以免费使用。目前世界上185个国家中有超多46万的开发者在使用Appcelerator提供的解决方案。

Titanium为Appcelerator于2008年底所推出的跨平台应用程序开发解决方案,目前支持iOS/Android/Blackberry/WM7等行动平台,以及Windows/Linux/OS X这三种主流的桌上型平台。

阅读全文

与iosjs编译器相关的资料

热点内容
鸡料与鸡粪的算法 浏览:833
phpif变量为空值 浏览:59
iot编译器异常 浏览:600
代理服务器被禁用怎么上网 浏览:411
隐私加密怎么设置密码 浏览:940
马丁靴补色解压 浏览:565
在设置app上怎么找到个人热点 浏览:754
按照档案号生成文件夹 浏览:1000
程序员转方向 浏览:111
lol敏捷加密 浏览:882
传统公司眼中的加密货币 浏览:430
电脑图标又出现文件夹怎么去掉 浏览:964
排序算法c和a 浏览:418
手机拍照上传android 浏览:343
linux压缩率 浏览:614
电脑浏览器加密端口 浏览:536
单片机线性电源 浏览:268
韩国云服务器评测 浏览:740
python输出hello 浏览:594
如何在最左侧添加文件夹 浏览:500